proteus  1.1.0
C/C++/Fortran libraries
WaveTools.c
Go to the documentation of this file.
1 /* Generated by Cython 0.23.4 */
2 
3 #define PY_SSIZE_T_CLEAN
4 #include "Python.h"
5 #ifndef Py_PYTHON_H
6  #error Python headers needed to compile C extensions, please install development version of Python.
7 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
8  #error Cython requires Python 2.6+ or Python 3.2+.
9 #else
10 #define CYTHON_ABI "0_23_4"
11 #include <stddef.h>
12 #ifndef offsetof
13 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
14 #endif
15 #if !defined(WIN32) && !defined(MS_WINDOWS)
16  #ifndef __stdcall
17  #define __stdcall
18  #endif
19  #ifndef __cdecl
20  #define __cdecl
21  #endif
22  #ifndef __fastcall
23  #define __fastcall
24  #endif
25 #endif
26 #ifndef DL_IMPORT
27  #define DL_IMPORT(t) t
28 #endif
29 #ifndef DL_EXPORT
30  #define DL_EXPORT(t) t
31 #endif
32 #ifndef PY_LONG_LONG
33  #define PY_LONG_LONG LONG_LONG
34 #endif
35 #ifndef Py_HUGE_VAL
36  #define Py_HUGE_VAL HUGE_VAL
37 #endif
38 #ifdef PYPY_VERSION
39 #define CYTHON_COMPILING_IN_PYPY 1
40 #define CYTHON_COMPILING_IN_CPYTHON 0
41 #else
42 #define CYTHON_COMPILING_IN_PYPY 0
43 #define CYTHON_COMPILING_IN_CPYTHON 1
44 #endif
45 #if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
46 #define CYTHON_USE_PYLONG_INTERNALS 1
47 #endif
48 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
49 #define Py_OptimizeFlag 0
50 #endif
51 #define __PYX_BUILD_PY_SSIZE_T "n"
52 #define CYTHON_FORMAT_SSIZE_T "z"
53 #if PY_MAJOR_VERSION < 3
54  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
55  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
56  PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
57  #define __Pyx_DefaultClassType PyClass_Type
58 #else
59  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
60  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
61  PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
62  #define __Pyx_DefaultClassType PyType_Type
63 #endif
64 #ifndef Py_TPFLAGS_CHECKTYPES
65  #define Py_TPFLAGS_CHECKTYPES 0
66 #endif
67 #ifndef Py_TPFLAGS_HAVE_INDEX
68  #define Py_TPFLAGS_HAVE_INDEX 0
69 #endif
70 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
71  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
72 #endif
73 #ifndef Py_TPFLAGS_HAVE_FINALIZE
74  #define Py_TPFLAGS_HAVE_FINALIZE 0
75 #endif
76 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
77  #define CYTHON_PEP393_ENABLED 1
78  #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
79  0 : _PyUnicode_Ready((PyObject *)(op)))
80  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
81  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
82  #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
83  #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
84  #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
85 #else
86  #define CYTHON_PEP393_ENABLED 0
87  #define __Pyx_PyUnicode_READY(op) (0)
88  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
89  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
90  #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
91  #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
92  #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
93 #endif
94 #if CYTHON_COMPILING_IN_PYPY
95  #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
96  #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
97 #else
98  #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
99  #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
100  PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
101 #endif
102 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
103  #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
104 #endif
105 #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
106 #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
107 #if PY_MAJOR_VERSION >= 3
108  #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
109 #else
110  #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
111 #endif
112 #if PY_MAJOR_VERSION >= 3
113  #define PyBaseString_Type PyUnicode_Type
114  #define PyStringObject PyUnicodeObject
115  #define PyString_Type PyUnicode_Type
116  #define PyString_Check PyUnicode_Check
117  #define PyString_CheckExact PyUnicode_CheckExact
118 #endif
119 #if PY_MAJOR_VERSION >= 3
120  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
121  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
122 #else
123  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
124  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
125 #endif
126 #ifndef PySet_CheckExact
127  #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
128 #endif
129 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
130 #if PY_MAJOR_VERSION >= 3
131  #define PyIntObject PyLongObject
132  #define PyInt_Type PyLong_Type
133  #define PyInt_Check(op) PyLong_Check(op)
134  #define PyInt_CheckExact(op) PyLong_CheckExact(op)
135  #define PyInt_FromString PyLong_FromString
136  #define PyInt_FromUnicode PyLong_FromUnicode
137  #define PyInt_FromLong PyLong_FromLong
138  #define PyInt_FromSize_t PyLong_FromSize_t
139  #define PyInt_FromSsize_t PyLong_FromSsize_t
140  #define PyInt_AsLong PyLong_AsLong
141  #define PyInt_AS_LONG PyLong_AS_LONG
142  #define PyInt_AsSsize_t PyLong_AsSsize_t
143  #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
144  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
145  #define PyNumber_Int PyNumber_Long
146 #endif
147 #if PY_MAJOR_VERSION >= 3
148  #define PyBoolObject PyLongObject
149 #endif
150 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
151  #ifndef PyUnicode_InternFromString
152  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
153  #endif
154 #endif
155 #if PY_VERSION_HEX < 0x030200A4
156  typedef long Py_hash_t;
157  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
158  #define __Pyx_PyInt_AsHash_t PyInt_AsLong
159 #else
160  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
161  #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
162 #endif
163 #if PY_MAJOR_VERSION >= 3
164  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
165 #else
166  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
167 #endif
168 #if PY_VERSION_HEX >= 0x030500B1
169 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
170 #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
171 #elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
172 typedef struct {
173  unaryfunc am_await;
174  unaryfunc am_aiter;
175  unaryfunc am_anext;
176 } __Pyx_PyAsyncMethodsStruct;
177 #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
178 #else
179 #define __Pyx_PyType_AsAsync(obj) NULL
180 #endif
181 #ifndef CYTHON_RESTRICT
182  #if defined(__GNUC__)
183  #define CYTHON_RESTRICT __restrict__
184  #elif defined(_MSC_VER) && _MSC_VER >= 1400
185  #define CYTHON_RESTRICT __restrict
186  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
187  #define CYTHON_RESTRICT restrict
188  #else
189  #define CYTHON_RESTRICT
190  #endif
191 #endif
192 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
193 
194 #ifndef CYTHON_INLINE
195  #if defined(__GNUC__)
196  #define CYTHON_INLINE __inline__
197  #elif defined(_MSC_VER)
198  #define CYTHON_INLINE __inline
199  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
200  #define CYTHON_INLINE inline
201  #else
202  #define CYTHON_INLINE
203  #endif
204 #endif
205 
206 #if defined(WIN32) || defined(MS_WINDOWS)
207  #define _USE_MATH_DEFINES
208 #endif
209 #include <math.h>
210 #ifdef NAN
211 #define __PYX_NAN() ((float) NAN)
212 #else
213 static CYTHON_INLINE float __PYX_NAN() {
214  float value;
215  memset(&value, 0xFF, sizeof(value));
216  return value;
217 }
218 #endif
219 
220 
221 #if PY_MAJOR_VERSION >= 3
222  #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
223  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
224 #else
225  #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
226  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
227 #endif
228 
229 #ifndef __PYX_EXTERN_C
230  #ifdef __cplusplus
231  #define __PYX_EXTERN_C extern "C"
232  #else
233  #define __PYX_EXTERN_C extern
234  #endif
235 #endif
236 
237 #define __PYX_HAVE__WaveTools
238 #define __PYX_HAVE_API__WaveTools
239 #ifdef _OPENMP
240 #include <omp.h>
241 #endif /* _OPENMP */
242 
243 #ifdef PYREX_WITHOUT_ASSERTIONS
244 #define CYTHON_WITHOUT_ASSERTIONS
245 #endif
246 
247 #ifndef CYTHON_UNUSED
248 # if defined(__GNUC__)
249 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
250 # define CYTHON_UNUSED __attribute__ ((__unused__))
251 # else
252 # define CYTHON_UNUSED
253 # endif
254 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
255 # define CYTHON_UNUSED __attribute__ ((__unused__))
256 # else
257 # define CYTHON_UNUSED
258 # endif
259 #endif
260 #ifndef CYTHON_NCP_UNUSED
261 # if CYTHON_COMPILING_IN_CPYTHON
262 # define CYTHON_NCP_UNUSED
263 # else
264 # define CYTHON_NCP_UNUSED CYTHON_UNUSED
265 # endif
266 #endif
267 typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
268  const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
269 
270 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
271 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
272 #define __PYX_DEFAULT_STRING_ENCODING ""
273 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
274 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
275 #define __Pyx_uchar_cast(c) ((unsigned char)c)
276 #define __Pyx_long_cast(x) ((long)x)
277 #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
278  (sizeof(type) < sizeof(Py_ssize_t)) ||\
279  (sizeof(type) > sizeof(Py_ssize_t) &&\
280  likely(v < (type)PY_SSIZE_T_MAX ||\
281  v == (type)PY_SSIZE_T_MAX) &&\
282  (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
283  v == (type)PY_SSIZE_T_MIN))) ||\
284  (sizeof(type) == sizeof(Py_ssize_t) &&\
285  (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
286  v == (type)PY_SSIZE_T_MAX))) )
287 #if defined (__cplusplus) && __cplusplus >= 201103L
288  #include <cstdlib>
289  #define __Pyx_sst_abs(value) std::abs(value)
290 #elif SIZEOF_INT >= SIZEOF_SIZE_T
291  #define __Pyx_sst_abs(value) abs(value)
292 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
293  #define __Pyx_sst_abs(value) labs(value)
294 #elif defined (_MSC_VER) && defined (_M_X64)
295  #define __Pyx_sst_abs(value) _abs64(value)
296 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
297  #define __Pyx_sst_abs(value) llabs(value)
298 #elif defined (__GNUC__)
299  #define __Pyx_sst_abs(value) __builtin_llabs(value)
300 #else
301  #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
302 #endif
303 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
304 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
305 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
306 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
307 #define __Pyx_PyBytes_FromString PyBytes_FromString
308 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
309 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
310 #if PY_MAJOR_VERSION < 3
311  #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
312  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
313 #else
314  #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
315  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
316 #endif
317 #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
318 #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
319 #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
320 #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
321 #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
322 #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
323 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
324 #if PY_MAJOR_VERSION < 3
325 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
326 {
327  const Py_UNICODE *u_end = u;
328  while (*u_end++) ;
329  return (size_t)(u_end - u - 1);
330 }
331 #else
332 #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
333 #endif
334 #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
335 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
336 #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
337 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
338 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
339 #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
340 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
341 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
342 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
343 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
344 #if CYTHON_COMPILING_IN_CPYTHON
345 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
346 #else
347 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
348 #endif
349 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
350 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
351 static int __Pyx_sys_getdefaultencoding_not_ascii;
352 static int __Pyx_init_sys_getdefaultencoding_params(void) {
353  PyObject* sys;
354  PyObject* default_encoding = NULL;
355  PyObject* ascii_chars_u = NULL;
356  PyObject* ascii_chars_b = NULL;
357  const char* default_encoding_c;
358  sys = PyImport_ImportModule("sys");
359  if (!sys) goto bad;
360  default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
361  Py_DECREF(sys);
362  if (!default_encoding) goto bad;
363  default_encoding_c = PyBytes_AsString(default_encoding);
364  if (!default_encoding_c) goto bad;
365  if (strcmp(default_encoding_c, "ascii") == 0) {
366  __Pyx_sys_getdefaultencoding_not_ascii = 0;
367  } else {
368  char ascii_chars[128];
369  int c;
370  for (c = 0; c < 128; c++) {
371  ascii_chars[c] = c;
372  }
373  __Pyx_sys_getdefaultencoding_not_ascii = 1;
374  ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
375  if (!ascii_chars_u) goto bad;
376  ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
377  if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
378  PyErr_Format(
379  PyExc_ValueError,
380  "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
381  default_encoding_c);
382  goto bad;
383  }
384  Py_DECREF(ascii_chars_u);
385  Py_DECREF(ascii_chars_b);
386  }
387  Py_DECREF(default_encoding);
388  return 0;
389 bad:
390  Py_XDECREF(default_encoding);
391  Py_XDECREF(ascii_chars_u);
392  Py_XDECREF(ascii_chars_b);
393  return -1;
394 }
395 #endif
396 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
397 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
398 #else
399 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
400 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
401 static char* __PYX_DEFAULT_STRING_ENCODING;
402 static int __Pyx_init_sys_getdefaultencoding_params(void) {
403  PyObject* sys;
404  PyObject* default_encoding = NULL;
405  char* default_encoding_c;
406  sys = PyImport_ImportModule("sys");
407  if (!sys) goto bad;
408  default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
409  Py_DECREF(sys);
410  if (!default_encoding) goto bad;
411  default_encoding_c = PyBytes_AsString(default_encoding);
412  if (!default_encoding_c) goto bad;
413  __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
414  if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
415  strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
416  Py_DECREF(default_encoding);
417  return 0;
418 bad:
419  Py_XDECREF(default_encoding);
420  return -1;
421 }
422 #endif
423 #endif
424 
425 
426 /* Test for GCC > 2.95 */
427 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
428  #define likely(x) __builtin_expect(!!(x), 1)
429  #define unlikely(x) __builtin_expect(!!(x), 0)
430 #else /* !__GNUC__ or GCC < 2.95 */
431  #define likely(x) (x)
432  #define unlikely(x) (x)
433 #endif /* __GNUC__ */
434 
435 static PyObject *__pyx_m;
436 static PyObject *__pyx_d;
437 static PyObject *__pyx_b;
438 static PyObject *__pyx_empty_tuple;
439 static PyObject *__pyx_empty_bytes;
440 static int __pyx_lineno;
441 static int __pyx_clineno = 0;
442 static const char * __pyx_cfilenm= __FILE__;
443 static const char *__pyx_filename;
444 
445 
446 static const char *__pyx_f[] = {
447  "proteus/WaveTools.pyx",
448 };
449 
450 /*--- Type declarations ---*/
451 struct __pyx_defaults;
452 typedef struct __pyx_defaults __pyx_defaults;
453 struct __pyx_defaults {
454  PyObject *__pyx_arg_meanVelocity;
455 };
456 
457 /* --- Runtime support code (head) --- */
458 #ifndef CYTHON_REFNANNY
459  #define CYTHON_REFNANNY 0
460 #endif
461 #if CYTHON_REFNANNY
462  typedef struct {
463  void (*INCREF)(void*, PyObject*, int);
464  void (*DECREF)(void*, PyObject*, int);
465  void (*GOTREF)(void*, PyObject*, int);
466  void (*GIVEREF)(void*, PyObject*, int);
467  void* (*SetupContext)(const char*, int, const char*);
468  void (*FinishContext)(void**);
469  } __Pyx_RefNannyAPIStruct;
470  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
471  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
472  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
473 #ifdef WITH_THREAD
474  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
475  if (acquire_gil) {\
476  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
477  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
478  PyGILState_Release(__pyx_gilstate_save);\
479  } else {\
480  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
481  }
482 #else
483  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
484  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
485 #endif
486  #define __Pyx_RefNannyFinishContext()\
487  __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
488  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
489  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
490  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
491  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
492  #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
493  #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
494  #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
495  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
496 #else
497  #define __Pyx_RefNannyDeclarations
498  #define __Pyx_RefNannySetupContext(name, acquire_gil)
499  #define __Pyx_RefNannyFinishContext()
500  #define __Pyx_INCREF(r) Py_INCREF(r)
501  #define __Pyx_DECREF(r) Py_DECREF(r)
502  #define __Pyx_GOTREF(r)
503  #define __Pyx_GIVEREF(r)
504  #define __Pyx_XINCREF(r) Py_XINCREF(r)
505  #define __Pyx_XDECREF(r) Py_XDECREF(r)
506  #define __Pyx_XGOTREF(r)
507  #define __Pyx_XGIVEREF(r)
508 #endif
509 #define __Pyx_XDECREF_SET(r, v) do {\
510  PyObject *tmp = (PyObject *) r;\
511  r = v; __Pyx_XDECREF(tmp);\
512  } while (0)
513 #define __Pyx_DECREF_SET(r, v) do {\
514  PyObject *tmp = (PyObject *) r;\
515  r = v; __Pyx_DECREF(tmp);\
516  } while (0)
517 #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
518 #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
519 
520 #if CYTHON_COMPILING_IN_CPYTHON
521 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
522  PyTypeObject* tp = Py_TYPE(obj);
523  if (likely(tp->tp_getattro))
524  return tp->tp_getattro(obj, attr_name);
525 #if PY_MAJOR_VERSION < 3
526  if (likely(tp->tp_getattr))
527  return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
528 #endif
529  return PyObject_GetAttr(obj, attr_name);
530 }
531 #else
532 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
533 #endif
534 
535 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
536 
537 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
538  Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
539 
540 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
541 
542 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
543  PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
544  const char* function_name);
545 
546 #if CYTHON_COMPILING_IN_CPYTHON
547 static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
548  PyListObject* L = (PyListObject*) list;
549  Py_ssize_t len = Py_SIZE(list);
550  if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
551  Py_INCREF(x);
552  PyList_SET_ITEM(list, len, x);
553  Py_SIZE(list) = len+1;
554  return 0;
555  }
556  return PyList_Append(list, x);
557 }
558 #else
559 #define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
560 #endif
561 
562 static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
563  int result = PySequence_Contains(seq, item);
564  return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
565 }
566 
567 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
568 
569 #if CYTHON_COMPILING_IN_CPYTHON
570 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
571 #else
572 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
573 #endif
574 
575 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
576 
577 #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
578  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
579  __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
580  (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
581  __Pyx_GetItemInt_Generic(o, to_py_func(i))))
582 #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
583  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
584  __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
585  (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
586 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
587  int wraparound, int boundscheck);
588 #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
589  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
590  __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
591  (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
592 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
593  int wraparound, int boundscheck);
594 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
595 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
596  int is_list, int wraparound, int boundscheck);
597 
598 #if CYTHON_COMPILING_IN_CPYTHON
599 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
600 #endif
601 
602 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
603 
604 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
605  PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
606  PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
607  int has_cstart, int has_cstop, int wraparound);
608 
609 #if CYTHON_COMPILING_IN_CPYTHON
610 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
611 #else
612 #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
613 #endif
614 
615 #if CYTHON_COMPILING_IN_CPYTHON
616 static PyObject* __Pyx_PyFloat_DivideCObj(PyObject *op1, PyObject *op2, double floatval, int inplace);
617 #else
618 #define __Pyx_PyFloat_DivideCObj(op1, op2, floatval, inplace)\
619  ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)))
620  #endif
621 
622 #if CYTHON_COMPILING_IN_CPYTHON
623 static PyObject* __Pyx_PyFloat_SubtractCObj(PyObject *op1, PyObject *op2, double floatval, int inplace);
624 #else
625 #define __Pyx_PyFloat_SubtractCObj(op1, op2, floatval, inplace)\
626  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
627 #endif
628 
629 #if CYTHON_COMPILING_IN_CPYTHON
630 static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, int inplace);
631 #else
632 #define __Pyx_PyFloat_AddCObj(op1, op2, floatval, inplace)\
633  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
634 #endif
635 
636 #if CYTHON_COMPILING_IN_CPYTHON
637 static PyObject* __Pyx_PyFloat_SubtractObjC(PyObject *op1, PyObject *op2, double floatval, int inplace);
638 #else
639 #define __Pyx_PyFloat_SubtractObjC(op1, op2, floatval, inplace)\
640  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
641 #endif
642 
643 #define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
644  __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
645 static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
646  PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
647  PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
648  int has_cstart, int has_cstop, int wraparound);
649 
650 static double __Pyx__PyObject_AsDouble(PyObject* obj);
651 #if CYTHON_COMPILING_IN_PYPY
652 #define __Pyx_PyObject_AsDouble(obj)\
653 (likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\
654  likely(PyInt_CheckExact(obj)) ?\
655  PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj))
656 #else
657 #define __Pyx_PyObject_AsDouble(obj)\
658 ((likely(PyFloat_CheckExact(obj))) ?\
659  PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj))
660 #endif
661 
662 #if CYTHON_COMPILING_IN_CPYTHON
663 static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
664 #else
665 #define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\
666  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
667 #endif
668 
669 #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
670  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
671  __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
672  (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
673  __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
674 static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
675 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
676  int is_list, int wraparound, int boundscheck);
677 
678 #if CYTHON_COMPILING_IN_CPYTHON
679 #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
680 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
681  PyTypeObject* tp = Py_TYPE(obj);
682  if (likely(tp->tp_setattro))
683  return tp->tp_setattro(obj, attr_name, value);
684 #if PY_MAJOR_VERSION < 3
685  if (likely(tp->tp_setattr))
686  return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
687 #endif
688  return PyObject_SetAttr(obj, attr_name, value);
689 }
690 #else
691 #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n)
692 #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
693 #endif
694 
695 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb);
696 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb);
697 
698 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
699 
700 #if CYTHON_COMPILING_IN_CPYTHON
701 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
702 #else
703 #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
704  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
705 #endif
706 
707 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
708 
709 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
710 
711 #include <string.h>
712 
713 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
714 
715 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
716 
717 #if PY_MAJOR_VERSION >= 3
718 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
719 #else
720 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
721 #endif
722 
723 #if CYTHON_COMPILING_IN_CPYTHON
724 static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace);
725 #else
726 #define __Pyx_PyFloat_DivideObjC(op1, op2, floatval, inplace)\
727  ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)))
728  #endif
729 
730 #if CYTHON_COMPILING_IN_CPYTHON
731 static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
732 #else
733 #define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
734  PyObject_RichCompare(op1, op2, Py_EQ)
735  #endif
736 
737 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
738 
739 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
740 
741 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
742 
743 #define __Pyx_CyFunction_USED 1
744 #include <structmember.h>
745 #define __Pyx_CYFUNCTION_STATICMETHOD 0x01
746 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
747 #define __Pyx_CYFUNCTION_CCLASS 0x04
748 #define __Pyx_CyFunction_GetClosure(f)\
749  (((__pyx_CyFunctionObject *) (f))->func_closure)
750 #define __Pyx_CyFunction_GetClassObj(f)\
751  (((__pyx_CyFunctionObject *) (f))->func_classobj)
752 #define __Pyx_CyFunction_Defaults(type, f)\
753  ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
754 #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
755  ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
756 typedef struct {
757  PyCFunctionObject func;
758 #if PY_VERSION_HEX < 0x030500A0
759  PyObject *func_weakreflist;
760 #endif
761  PyObject *func_dict;
762  PyObject *func_name;
763  PyObject *func_qualname;
764  PyObject *func_doc;
765  PyObject *func_globals;
766  PyObject *func_code;
767  PyObject *func_closure;
768  PyObject *func_classobj;
769  void *defaults;
770  int defaults_pyobjects;
771  int flags;
772  PyObject *defaults_tuple;
773  PyObject *defaults_kwdict;
774  PyObject *(*defaults_getter)(PyObject *);
775  PyObject *func_annotations;
776 } __pyx_CyFunctionObject;
777 static PyTypeObject *__pyx_CyFunctionType = 0;
778 #define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
779  __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
780 static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
781  int flags, PyObject* qualname,
782  PyObject *self,
783  PyObject *module, PyObject *globals,
784  PyObject* code);
785 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
786  size_t size,
787  int pyobjects);
788 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
789  PyObject *tuple);
790 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
791  PyObject *dict);
792 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
793  PyObject *dict);
794 static int __pyx_CyFunction_init(void);
795 
796 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
797 
798 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
799  PyObject *mkw, PyObject *modname, PyObject *doc);
800 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
801  PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
802 
803 typedef struct {
804  int code_line;
805  PyCodeObject* code_object;
806 } __Pyx_CodeObjectCacheEntry;
807 struct __Pyx_CodeObjectCache {
808  int count;
809  int max_count;
810  __Pyx_CodeObjectCacheEntry* entries;
811 };
812 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
813 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
814 static PyCodeObject *__pyx_find_code_object(int code_line);
815 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
816 
817 static void __Pyx_AddTraceback(const char *funcname, int c_line,
818  int py_line, const char *filename);
819 
820 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
821 
822 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
823 
824 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
825 
826 static int __Pyx_check_binary_version(void);
827 
828 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
829 
830 
831 /* Module declarations from 'WaveTools' */
832 #define __Pyx_MODULE_NAME "WaveTools"
833 int __pyx_module_is_main_WaveTools = 0;
834 
835 /* Implementation of 'WaveTools' */
836 static PyObject *__pyx_builtin_range;
837 static PyObject *__pyx_builtin_sum;
838 static PyObject *__pyx_builtin_open;
839 static PyObject *__pyx_builtin_max;
840 static PyObject *__pyx_builtin_zip;
841 static char __pyx_k_B[] = "B";
842 static char __pyx_k_K[] = "K";
843 static char __pyx_k_M[] = "M";
844 static char __pyx_k_N[] = "N";
845 static char __pyx_k_U[] = "U";
846 static char __pyx_k_V[] = "V";
847 static char __pyx_k_Y[] = "Y";
848 static char __pyx_k_Z[] = "Z";
849 static char __pyx_k_a[] = "a";
850 static char __pyx_k_d[] = "d";
851 static char __pyx_k_f[] = "f";
852 static char __pyx_k_g[] = "g";
853 static char __pyx_k_i[] = "i";
854 static char __pyx_k_k[] = "k";
855 static char __pyx_k_l[] = "l";
856 static char __pyx_k_r[] = "r";
857 static char __pyx_k_s[] = "s";
858 static char __pyx_k_t[] = "t";
859 static char __pyx_k_u[] = "u";
860 static char __pyx_k_w[] = "w";
861 static char __pyx_k_x[] = "x";
862 static char __pyx_k_y[] = "y";
863 static char __pyx_k_G0[] = "G0";
864 static char __pyx_k_HH[] = "HH";
865 static char __pyx_k_Hs[] = "Hs";
866 static char __pyx_k_NN[] = "NN";
867 static char __pyx_k_Nf[] = "Nf";
868 static char __pyx_k_Nw[] = "Nw";
869 static char __pyx_k_Tm[] = "Tm";
870 static char __pyx_k_Tp[] = "Tp";
871 static char __pyx_k_UH[] = "UH";
872 static char __pyx_k_UV[] = "UV";
873 static char __pyx_k_aa[] = "aa";
874 static char __pyx_k_ai[] = "ai";
875 static char __pyx_k_bj[] = "bj";
876 static char __pyx_k_df[] = "df";
877 static char __pyx_k_dt[] = "dt";
878 static char __pyx_k_f0[] = "f0";
879 static char __pyx_k_fi[] = "fi";
880 static char __pyx_k_fp[] = "fp";
881 static char __pyx_k_ii[] = "ii";
882 static char __pyx_k_jj[] = "jj";
883 static char __pyx_k_ki[] = "ki";
884 static char __pyx_k_kk[] = "kk";
885 static char __pyx_k_nn[] = "nn";
886 static char __pyx_k_np[] = "np";
887 static char __pyx_k_pi[] = "pi";
888 static char __pyx_k_pp[] = "pp";
889 static char __pyx_k_rr[] = "rr";
890 static char __pyx_k_t0[] = "t0";
891 static char __pyx_k_th[] = "th";
892 static char __pyx_k_tt[] = "tt";
893 static char __pyx_k_v1[] = "v1";
894 static char __pyx_k_v2[] = "v2";
895 static char __pyx_k_ww[] = "ww";
896 static char __pyx_k_x0[] = "x0";
897 static char __pyx_k_x1[] = "x1";
898 static char __pyx_k_y0[] = "y0";
899 static char __pyx_k_z0[] = "z0";
900 static char __pyx_k_Eta[] = "Eta";
901 static char __pyx_k_NN1[] = "NN1";
902 static char __pyx_k_TMA[] = "TMA";
903 static char __pyx_k__82[] = ",";
904 static char __pyx_k_aiM[] = "aiM";
905 static char __pyx_k_amp[] = "amp";
906 static char __pyx_k_cos[] = "cos";
907 static char __pyx_k_csv[] = ".csv";
908 static char __pyx_k_cut[] = "cut";
909 static char __pyx_k_doc[] = "__doc__";
910 static char __pyx_k_dth[] = "dth";
911 static char __pyx_k_eta[] = "eta";
912 static char __pyx_k_exp[] = "exp";
913 static char __pyx_k_fft[] = "fft";
914 static char __pyx_k_fid[] = "fid";
915 static char __pyx_k_fim[] = "fim";
916 static char __pyx_k_fun[] = "fun";
917 static char __pyx_k_kiM[] = "kiM";
918 static char __pyx_k_log[] = "log";
919 static char __pyx_k_max[] = "max";
920 static char __pyx_k_mwl[] = "mwl";
921 static char __pyx_k_phi[] = "phi";
922 static char __pyx_k_sin[] = "sin";
923 static char __pyx_k_sum[] = "sum";
924 static char __pyx_k_sys[] = "sys";
925 static char __pyx_k_tma[] = "tma";
926 static char __pyx_k_txt[] = ".txt";
927 static char __pyx_k_zip[] = "zip";
928 static char __pyx_k_Mtot[] = "Mtot";
929 static char __pyx_k_Nall[] = "Nall";
930 static char __pyx_k_Sint[] = "Sint";
931 static char __pyx_k_copy[] = "copy";
932 static char __pyx_k_cosh[] = "cosh";
933 static char __pyx_k_diff[] = "diff";
934 static char __pyx_k_exit[] = "exit";
935 static char __pyx_k_fmax[] = "fmax";
936 static char __pyx_k_fmin[] = "fmin";
937 static char __pyx_k_freq[] = "freq";
938 static char __pyx_k_func[] = "func";
939 static char __pyx_k_gAbs[] = "gAbs";
940 static char __pyx_k_iend[] = "iend";
941 static char __pyx_k_imax[] = "imax";
942 static char __pyx_k_imin[] = "imin";
943 static char __pyx_k_init[] = "__init__";
944 static char __pyx_k_kAbs[] = "kAbs";
945 static char __pyx_k_kDir[] = "kDir";
946 static char __pyx_k_kdir[] = "kdir";
947 static char __pyx_k_main[] = "__main__";
948 static char __pyx_k_math[] = "math";
949 static char __pyx_k_mean[] = "mean";
950 static char __pyx_k_name[] = "__name__";
951 static char __pyx_k_nfft[] = "nfft";
952 static char __pyx_k_ones[] = "ones";
953 static char __pyx_k_open[] = "open";
954 static char __pyx_k_phi0[] = "phi0";
955 static char __pyx_k_phiM[] = "phiM";
956 static char __pyx_k_rand[] = "rand";
957 static char __pyx_k_real[] = "real";
958 static char __pyx_k_self[] = "self";
959 static char __pyx_k_sinh[] = "sinh";
960 static char __pyx_k_smax[] = "smax";
961 static char __pyx_k_span[] = "span";
962 static char __pyx_k_sqrt[] = "sqrt";
963 static char __pyx_k_tanh[] = "tanh";
964 static char __pyx_k_term[] = "term";
965 static char __pyx_k_test[] = "__test__";
966 static char __pyx_k_time[] = "time";
967 static char __pyx_k_vDir[] = "vDir";
968 static char __pyx_k_wind[] = "wind";
969 static char __pyx_k_Si_Jm[] = "Si_Jm";
970 static char __pyx_k_Si_Sp[] = "Si_Sp";
971 static char __pyx_k_array[] = "array";
972 static char __pyx_k_close[] = "close";
973 static char __pyx_k_cmath[] = "cmath";
974 static char __pyx_k_cos2s[] = "cos2s";
975 static char __pyx_k_depth[] = "depth";
976 static char __pyx_k_fft_x[] = "fft_x";
977 static char __pyx_k_gamma[] = "gamma";
978 static char __pyx_k_ipeak[] = "ipeak";
979 static char __pyx_k_kDirM[] = "kDirM";
980 static char __pyx_k_kDiri[] = "kDiri";
981 static char __pyx_k_kmode[] = "kmode";
982 static char __pyx_k_level[] = "level";
983 static char __pyx_k_ncols[] = "ncols";
984 static char __pyx_k_niter[] = "niter";
985 static char __pyx_k_numpy[] = "numpy";
986 static char __pyx_k_omega[] = "omega";
987 static char __pyx_k_phase[] = "phase";
988 static char __pyx_k_range[] = "range";
989 static char __pyx_k_setup[] = "setup";
990 static char __pyx_k_shape[] = "shape";
991 static char __pyx_k_sigma[] = "sigma";
992 static char __pyx_k_tdata[] = "tdata";
993 static char __pyx_k_theta[] = "theta";
994 static char __pyx_k_tlast[] = "tlast";
995 static char __pyx_k_w_aux[] = "w_aux";
996 static char __pyx_k_where[] = "where";
997 static char __pyx_k_wmode[] = "wmode";
998 static char __pyx_k_zeros[] = "zeros";
999 static char __pyx_k_Bcoeff[] = "Bcoeff";
1000 static char __pyx_k_Cutoff[] = "Cutoff";
1001 static char __pyx_k_Fenton[] = "Fenton";
1002 static char __pyx_k_Linear[] = "Linear";
1003 static char __pyx_k_Nftemp[] = "Nftemp";
1004 static char __pyx_k_Nwaves[] = "Nwaves";
1005 static char __pyx_k_PM_mod[] = "PM_mod";
1006 static char __pyx_k_Window[] = "Window";
1007 static char __pyx_k_Ycoeff[] = "Ycoeff";
1008 static char __pyx_k_aiDirs[] = "aiDirs";
1009 static char __pyx_k_append[] = "append";
1010 static char __pyx_k_costap[] = "costap";
1011 static char __pyx_k_cutoff[] = "cutoff";
1012 static char __pyx_k_decomp[] = "decomp";
1013 static char __pyx_k_import[] = "__import__";
1014 static char __pyx_k_interp[] = "interp";
1015 static char __pyx_k_ispan1[] = "ispan1";
1016 static char __pyx_k_ispan2[] = "ispan2";
1017 static char __pyx_k_module[] = "__module__";
1018 static char __pyx_k_omega0[] = "omega0";
1019 static char __pyx_k_omegaM[] = "omegaM";
1020 static char __pyx_k_period[] = "period";
1021 static char __pyx_k_random[] = "random";
1022 static char __pyx_k_tfirst[] = "tfirst";
1023 static char __pyx_k_thetas[] = "thetas";
1024 static char __pyx_k_tolist[] = "tolist";
1025 static char __pyx_k_tophat[] = "tophat";
1026 static char __pyx_k_tstart[] = "tstart";
1027 static char __pyx_k_vector[] = "vector";
1028 static char __pyx_k_JONSWAP[] = "JONSWAP";
1029 static char __pyx_k_Overlap[] = "Overlap";
1030 static char __pyx_k_Twindow[] = "Twindow";
1031 static char __pyx_k_Ufenton[] = "Ufenton";
1032 static char __pyx_k_dt_temp[] = "dt_temp";
1033 static char __pyx_k_fftfreq[] = "fftfreq";
1034 static char __pyx_k_fim_tmp[] = "fim_tmp";
1035 static char __pyx_k_loadtxt[] = "loadtxt";
1036 static char __pyx_k_npoints[] = "npoints";
1037 static char __pyx_k_overlap[] = "overlap";
1038 static char __pyx_k_phiDirs[] = "phiDirs";
1039 static char __pyx_k_phiSymm[] = "phiSymm";
1040 static char __pyx_k_prepare[] = "__prepare__";
1041 static char __pyx_k_results[] = "results";
1042 static char __pyx_k_theta_m[] = "theta_m";
1043 static char __pyx_k_tlength[] = "tlength";
1044 static char __pyx_k_uDirect[] = "uDirect";
1045 static char __pyx_k_uWindow[] = "uWindow";
1046 static char __pyx_k_waveDir[] = "waveDir";
1047 static char __pyx_k_Nspectra[] = "Nspectra";
1048 static char __pyx_k_Nwindows[] = "Nwindows";
1049 static char __pyx_k_Toverlap[] = "Toverlap";
1050 static char __pyx_k_dirCheck[] = "dirCheck";
1051 static char __pyx_k_dircheck[] = "dircheck";
1052 static char __pyx_k_doInterp[] = "doInterp";
1053 static char __pyx_k_eta_mode[] = "eta_mode";
1054 static char __pyx_k_filetype[] = "filetype";
1055 static char __pyx_k_funcName[] = "funcName";
1056 static char __pyx_k_func_ret[] = "func_ret";
1057 static char __pyx_k_handover[] = "handover";
1058 static char __pyx_k_linspace[] = "linspace";
1059 static char __pyx_k_logEvent[] = "logEvent";
1060 static char __pyx_k_qualname[] = "__qualname__";
1061 static char __pyx_k_skiprows[] = "skiprows";
1062 static char __pyx_k_spec_fun[] = "spec_fun";
1063 static char __pyx_k_vel_mode[] = "vel_mode";
1064 static char __pyx_k_waveDir0[] = "waveDir0";
1065 static char __pyx_k_waveDirs[] = "waveDirs";
1066 static char __pyx_k_waveType[] = "waveType";
1067 static char __pyx_k_Profiling[] = "Profiling";
1068 static char __pyx_k_WaveTools[] = "WaveTools";
1069 static char __pyx_k_amplitude[] = "amplitude";
1070 static char __pyx_k_delimiter[] = "delimiter";
1071 static char __pyx_k_etaDirect[] = "etaDirect";
1072 static char __pyx_k_etaWindow[] = "etaWindow";
1073 static char __pyx_k_funcNames[] = "funcNames";
1074 static char __pyx_k_metaclass[] = "__metaclass__";
1075 static char __pyx_k_mitsuyasu[] = "mitsuyasu";
1076 static char __pyx_k_spectName[] = "spectName";
1077 static char __pyx_k_time_temp[] = "time_temp";
1078 static char __pyx_k_wind_filt[] = "wind_filt";
1079 static char __pyx_k_TimeSeries[] = "TimeSeries";
1080 static char __pyx_k_bandFactor[] = "bandFactor";
1081 static char __pyx_k_directions[] = "directions";
1082 static char __pyx_k_dispersion[] = "dispersion";
1083 static char __pyx_k_findWindow[] = "findWindow";
1084 static char __pyx_k_rec_direct[] = "rec_direct";
1085 static char __pyx_k_rotation3D[] = "rotation3D";
1086 static char __pyx_k_setVertDir[] = "setVertDir";
1087 static char __pyx_k_spreadName[] = "spreadName";
1088 static char __pyx_k_spread_fun[] = "spread_fun";
1089 static char __pyx_k_temp_array[] = "temp_array";
1090 static char __pyx_k_waveHeight[] = "waveHeight";
1091 static char __pyx_k_wavelength[] = "wavelength";
1092 static char __pyx_k_windowName[] = "windowName";
1093 static char __pyx_k_RandomWaves[] = "RandomWaves";
1094 static char __pyx_k_cutoffTotal[] = "cutoffTotal";
1095 static char __pyx_k_sigmaReturn[] = "sigmaReturn";
1096 static char __pyx_k_validSpread[] = "validSpread";
1097 static char __pyx_k_windows_rec[] = "windows_rec";
1098 static char __pyx_k_SpatialTools[] = "SpatialTools";
1099 static char __pyx_k_meanVelocity[] = "meanVelocity";
1100 static char __pyx_k_normIntegral[] = "normIntegral";
1101 static char __pyx_k_setDirVector[] = "setDirVector";
1102 static char __pyx_k_validSpectra[] = "validSpectra";
1103 static char __pyx_k_validWindows[] = "validWindows";
1104 static char __pyx_k_RandomWaves_u[] = "RandomWaves.u";
1105 static char __pyx_k_spread_params[] = "spread_params";
1106 static char __pyx_k_window_params[] = "window_params";
1107 static char __pyx_k_knownWaveTypes[] = "knownWaveTypes";
1108 static char __pyx_k_timeSeriesFile[] = "timeSeriesFile";
1109 static char __pyx_k_validFunctions[] = "validFunctions";
1110 static char __pyx_k_RandomWaves_eta[] = "RandomWaves.eta";
1111 static char __pyx_k_spectral_params[] = "spectral_params";
1112 static char __pyx_k_DirectionalWaves[] = "DirectionalWaves";
1113 static char __pyx_k_decompose_window[] = "decompose_window";
1114 static char __pyx_k_returnRectangles[] = "returnRectangles";
1115 static char __pyx_k_windows_handover[] = "windows_handover";
1116 static char __pyx_k_TimeSeries___init[] = "TimeSeries.__init__";
1117 static char __pyx_k_decompose_tseries[] = "decompose_tseries";
1118 static char __pyx_k_reduceToIntervals[] = "reduceToIntervals";
1119 static char __pyx_k_DirectionalWaves_u[] = "DirectionalWaves.u";
1120 static char __pyx_k_MonochromaticWaves[] = "MonochromaticWaves";
1121 static char __pyx_k_RandomWaves___init[] = "RandomWaves.__init__";
1122 static char __pyx_k_TimeSeries_uDirect[] = "TimeSeries.uDirect";
1123 static char __pyx_k_TimeSeries_uWindow[] = "TimeSeries.uWindow";
1124 static char __pyx_k_returnRectangles3D[] = "returnRectangles3D";
1125 static char __pyx_k_timeSeriesPosition[] = "timeSeriesPosition";
1126 static char __pyx_k_DirectionalWaves_eta[] = "DirectionalWaves.eta";
1127 static char __pyx_k_MonochromaticWaves_u[] = "MonochromaticWaves.u";
1128 static char __pyx_k_TimeSeries_etaDirect[] = "TimeSeries.etaDirect";
1129 static char __pyx_k_TimeSeries_etaWindow[] = "TimeSeries.etaWindow";
1130 static char __pyx_k_loadExistingFunction[] = "loadExistingFunction";
1131 static char __pyx_k_TimeSeries_findWindow[] = "TimeSeries.findWindow";
1132 static char __pyx_k_MonochromaticWaves_eta[] = "MonochromaticWaves.eta";
1133 static char __pyx_k_DirectionalWaves___init[] = "DirectionalWaves.__init__";
1134 static char __pyx_k_MultiSpectraRandomWaves[] = "MultiSpectraRandomWaves";
1135 static char __pyx_k_MonochromaticWaves___init[] = "MonochromaticWaves.__init__";
1136 static char __pyx_k_MultiSpectraRandomWaves_u[] = "MultiSpectraRandomWaves.u";
1137 static char __pyx_k_MultiSpectraRandomWaves_eta[] = "MultiSpectraRandomWaves.eta";
1138 static char __pyx_k_MultiSpectraRandomWaves___init[] = "MultiSpectraRandomWaves.__init__";
1139 static char __pyx_k_Generate_a_time_series_by_using[] = "Generate a time series by using spectral windowing method.\n :param timeSeriesFile: Time series file name\n :param skiprows: How many rows to skip while reading time series\n :param: timeSeriesPosition: 3D vector showing the position of the surface elevation sampling\n :param depth: depth [L]\n :param N: number of frequency bins [-]\n :param mwl: mean water level [L]\n :param waveDir: wave Direction vector\n :param g: Gravitational acceleration vector (3 components required)\n :cutoffTotal: Parameter for cutting off the first and the last part of the time series, given in ratio of the total duration (default 0.01)\n :param rec_direct: Logical variable, True for direct reconstruction, False for windowed reconstrunction\n :window_params: dictionary for window reconstruction parameters. Mandatory definition for Nwaves (how many waves per window) Tm (mean wave period), wind_filt (window filter name in string form). Optional: Overlap (window overlap as a percentage of window lenght), Cutoff (length of domain wher filter is applied, as a percentage of the 1/2 of window length)\n\n ";
1140 static char __pyx_k_WaveTools_py_Reading_spectra_No[] = "WaveTools.py: Reading spectra No %s";
1141 static char __pyx_k_WaveTools_py_Reading_timeseries[] = "WaveTools.py: Reading timeseries from %s file: %s";
1142 static char __pyx_k_WaveTools_py_Set_parameters_for[] = "WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary";
1143 static char __pyx_k_WaveTools_py_Window_handover_is[] = "WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap";
1144 static char __pyx_k_home_cekees_proteus_proteus_Wav[] = "/home/cekees/proteus/proteus/WaveTools.pyx";
1145 static char __pyx_k_Generate_a_monochromatic_wave_tr[] = "Generate a monochromatic wave train in the linear regime\n :param period: Monochromatic wave period\n :param waveHeight: Monochromatic wave height\n :param mwl: Mean water level\n :param depth: Mean water depth\n :param g: gravitational acceleration\n :param waveDir: wave direction vector (all 3 components needed)\n :param wavelength: wavelength for nonlinear (Fenton) waves. Can assume None if waves are linear, need to declare if waveType is Fenton\n :param waveType: can be Linear or Fenton (nonlinear). Linear by default\n :param Ycoeff: Y coefficient array for Fenton waves (see JD Fenton (1988) THE NUMERICAL SOLUTION OF STEADY WATER WAVE PROBLEMS, Computer and Geosciences, 14(3), 357-368, \n http://johndfenton.com/Papers/Fenton88-The-numerical-solution-of-steady-water-wave-problems.pdf \n :param BCoeff: B coefficient array for Fenton waves (see reference above)\n :meanVelocity: Current velocity. Recommended use with Fenton waves\n :phi0: Phase of the wave \n";
1146 static char __pyx_k_Generate_a_random_wave_timeserie[] = "Generate a random wave timeseries from multiple spectra. \n Same input parameters as RandomWaves class but they have to be all in lists with the same lenght as the spectra (except from g!)\n :param Nspectra, number of spectra\n ";
1147 static char __pyx_k_Generate_approximate_random_wave[] = "Generate approximate random wave solutions\n :param Tp: frequency [1/T]\n :param Hs: significant wave height [L]\n :param mwl: mean water level [L]\n :param depth: depth [L]\n :param waveDir:wave Direction vector with three components [-]\n :param g: Gravitational acceleration vector with three components [L/T^2]\n :param N: number of frequency bins [-]\n :param bandFactor: width factor for band around fp [-]\n :param spectName: Name of spectral function in string format. Use a random word and run the code to obtain the vaild spectra names\n :param spectral_params: Dictionary of additional arguments for spectral function, specific to each spectral function, except from Hs and Tp e.g. {\"gamma\": 3.3, \"TMA\" = True, \"depth\" = 1} for Jonswap. Check spectral function arguments \n :param phi: Array of component phases - if set to none, random phases are assigned\n";
1148 static char __pyx_k_Tools_for_working_with_water_wav[] = "Tools for working with water waves.\n\nThe primary objective of this module is to provide solutions (exact and\napproximate) for the free surface deformation and subsurface velocity\ncomponents of water waves. These can be used as boundary conditions, wave\ngeneration sources, and validation solutions for numerical wave codes.\n\n.. inheritance-diagram:: ShockCapturing\n :parts: 2\n";
1149 static char __pyx_k_WaveTools_py_Additional_spectral[] = "WaveTools.py: Additional spectral parameters are not valid for the %s spectrum";
1150 static char __pyx_k_WaveTools_py_Additional_spread_p[] = "WaveTools.py: Additional spread parameters are not valid for the %s spectrum";
1151 static char __pyx_k_WaveTools_py_Checking_duration_o[] = "WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration";
1152 static char __pyx_k_WaveTools_py_Correcting_window_d[] = "WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx.";
1153 static char __pyx_k_WaveTools_py_Cutoff_entry_in_win[] = "WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)";
1154 static char __pyx_k_WaveTools_py_Dictionary_key_Nwav[] = "WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary";
1155 static char __pyx_k_WaveTools_py_Dictionary_key_Tm_m[] = "WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary";
1156 static char __pyx_k_WaveTools_py_Dictionary_key_Wind[] = "WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary";
1157 static char __pyx_k_WaveTools_py_File_s_must_be_give[] = "WaveTools.py: File %s must be given in .txt or .csv format";
1158 static char __pyx_k_WaveTools_py_Found_not_consisten[] = "WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically";
1159 static char __pyx_k_WaveTools_py_Location_vector_for[] = "WaveTools.py: Location vector for timeSeries must have three-components";
1160 static char __pyx_k_WaveTools_py_Need_to_define_Ycoe[] = "WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves";
1161 static char __pyx_k_WaveTools_py_No_phase_array_is_g[] = "WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves";
1162 static char __pyx_k_WaveTools_py_Not_constant_sampli[] = "WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate";
1163 static char __pyx_k_WaveTools_py_Overlap_entry_in_wi[] = "WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)";
1164 static char __pyx_k_WaveTools_py_Parameters_passed_i[] = "WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ";
1165 static char __pyx_k_WaveTools_py_Phase_array_must_ha[] = "WaveTools.py: Phase array must have N elements";
1166 static char __pyx_k_WaveTools_py_Reconstruction_is_e[] = "WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )";
1167 static char __pyx_k_WaveTools_py_Timeseries_file_s_m[] = "WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]";
1168 static char __pyx_k_WaveTools_py_Using_s_windows_for[] = "WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap";
1169 static char __pyx_k_WaveTools_py_Wavelenght_is_not_d[] = "WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments";
1170 static char __pyx_k_WaveTools_py_Wrong_function_type[] = "WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s";
1171 static char __pyx_k_WaveTools_py_meanVelocity_should[] = "WaveTools.py: meanVelocity should be a vector with 3 components. ";
1172 static char __pyx_k_WaveTools_py_performing_a_direct[] = "WaveTools.py: performing a direct series decomposition";
1173 static char __pyx_k_WaveTools_py_performing_series_d[] = "WaveTools.py: performing series decomposition with spectral windows";
1174 static char __pyx_k_WaveTools_py_phi_argument_must_b[] = "WaveTools.py: phi argument must be an array with N elements";
1175 static char __pyx_k_WaveTools_py_phi_in_DirectionalW[] = "WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N";
1176 static char __pyx_k_Wave_direction_is_not_perpendicu[] = "Wave direction is not perpendicular to gravity vector. Check input";
1177 static char __pyx_k_Wavetools_py_Provide_valid_depth[] = "Wavetools:py. Provide valid depth definition definition for TMA spectrum";
1178 static char __pyx_k_Wavetools_py_Stopping_simulation[] = "Wavetools:py. Stopping simulation";
1179 static char __pyx_k_Wrong_wavetype_given_Valid_wavet[] = "Wrong wavetype given: Valid wavetypes are %s";
1180 static char __pyx_k_Generate_a_random_wave_timeserie_2[] = "Generate a random wave timeseries from directional waves\n Same input parameters as RandomWaves with the addition of:\n :param M: number of discrete directions\n :param waveDir0: lead direction in vector form (3 components required)\n :spreadName: Spreading function name (can be cos2s or mitsuyashu), given in string format\n :spread_params: Parameters specific to each spread functions, e.g. {\"s\":15} or {fi0: 1, smax=20}, except from f and theta. Check spread functions for more info\n :phiSymm: Logical variable, by default False, when set to True it generated same phase for symmetrically arranged directions, with respect to the lead direction\n \n ";
1181 static PyObject *__pyx_n_s_B;
1182 static PyObject *__pyx_n_s_Bcoeff;
1183 static PyObject *__pyx_n_s_Cutoff;
1184 static PyObject *__pyx_n_s_DirectionalWaves;
1185 static PyObject *__pyx_n_s_DirectionalWaves___init;
1186 static PyObject *__pyx_n_s_DirectionalWaves_eta;
1187 static PyObject *__pyx_n_s_DirectionalWaves_u;
1188 static PyObject *__pyx_n_s_Eta;
1189 static PyObject *__pyx_n_s_Fenton;
1190 static PyObject *__pyx_n_s_G0;
1191 static PyObject *__pyx_kp_s_Generate_a_monochromatic_wave_tr;
1192 static PyObject *__pyx_kp_s_Generate_a_random_wave_timeserie;
1193 static PyObject *__pyx_kp_s_Generate_a_random_wave_timeserie_2;
1194 static PyObject *__pyx_kp_s_Generate_a_time_series_by_using;
1195 static PyObject *__pyx_kp_s_Generate_approximate_random_wave;
1196 static PyObject *__pyx_n_s_HH;
1197 static PyObject *__pyx_n_s_Hs;
1198 static PyObject *__pyx_n_s_JONSWAP;
1199 static PyObject *__pyx_n_s_K;
1200 static PyObject *__pyx_n_s_Linear;
1201 static PyObject *__pyx_n_s_M;
1202 static PyObject *__pyx_n_s_MonochromaticWaves;
1203 static PyObject *__pyx_n_s_MonochromaticWaves___init;
1204 static PyObject *__pyx_n_s_MonochromaticWaves_eta;
1205 static PyObject *__pyx_n_s_MonochromaticWaves_u;
1206 static PyObject *__pyx_n_s_Mtot;
1207 static PyObject *__pyx_n_s_MultiSpectraRandomWaves;
1208 static PyObject *__pyx_n_s_MultiSpectraRandomWaves___init;
1209 static PyObject *__pyx_n_s_MultiSpectraRandomWaves_eta;
1210 static PyObject *__pyx_n_s_MultiSpectraRandomWaves_u;
1211 static PyObject *__pyx_n_s_N;
1212 static PyObject *__pyx_n_s_NN;
1213 static PyObject *__pyx_n_s_NN1;
1214 static PyObject *__pyx_n_s_Nall;
1215 static PyObject *__pyx_n_s_Nf;
1216 static PyObject *__pyx_n_s_Nftemp;
1217 static PyObject *__pyx_n_s_Nspectra;
1218 static PyObject *__pyx_n_s_Nw;
1219 static PyObject *__pyx_n_s_Nwaves;
1220 static PyObject *__pyx_n_s_Nwindows;
1221 static PyObject *__pyx_n_s_Overlap;
1222 static PyObject *__pyx_n_s_PM_mod;
1223 static PyObject *__pyx_n_s_Profiling;
1224 static PyObject *__pyx_n_s_RandomWaves;
1225 static PyObject *__pyx_n_s_RandomWaves___init;
1226 static PyObject *__pyx_n_s_RandomWaves_eta;
1227 static PyObject *__pyx_n_s_RandomWaves_u;
1228 static PyObject *__pyx_n_s_Si_Jm;
1229 static PyObject *__pyx_n_s_Si_Sp;
1230 static PyObject *__pyx_n_s_Sint;
1231 static PyObject *__pyx_n_s_SpatialTools;
1232 static PyObject *__pyx_n_s_TMA;
1233 static PyObject *__pyx_n_s_TimeSeries;
1234 static PyObject *__pyx_n_s_TimeSeries___init;
1235 static PyObject *__pyx_n_s_TimeSeries_etaDirect;
1236 static PyObject *__pyx_n_s_TimeSeries_etaWindow;
1237 static PyObject *__pyx_n_s_TimeSeries_findWindow;
1238 static PyObject *__pyx_n_s_TimeSeries_uDirect;
1239 static PyObject *__pyx_n_s_TimeSeries_uWindow;
1240 static PyObject *__pyx_n_s_Tm;
1241 static PyObject *__pyx_n_s_Toverlap;
1242 static PyObject *__pyx_n_s_Tp;
1243 static PyObject *__pyx_n_s_Twindow;
1244 static PyObject *__pyx_n_s_U;
1245 static PyObject *__pyx_n_s_UH;
1246 static PyObject *__pyx_n_s_UV;
1247 static PyObject *__pyx_n_s_Ufenton;
1248 static PyObject *__pyx_n_s_V;
1249 static PyObject *__pyx_n_s_WaveTools;
1250 static PyObject *__pyx_kp_s_WaveTools_py_Additional_spectral;
1251 static PyObject *__pyx_kp_s_WaveTools_py_Additional_spread_p;
1252 static PyObject *__pyx_kp_s_WaveTools_py_Checking_duration_o;
1253 static PyObject *__pyx_kp_s_WaveTools_py_Correcting_window_d;
1254 static PyObject *__pyx_kp_s_WaveTools_py_Cutoff_entry_in_win;
1255 static PyObject *__pyx_kp_s_WaveTools_py_Dictionary_key_Nwav;
1256 static PyObject *__pyx_kp_s_WaveTools_py_Dictionary_key_Tm_m;
1257 static PyObject *__pyx_kp_s_WaveTools_py_Dictionary_key_Wind;
1258 static PyObject *__pyx_kp_s_WaveTools_py_File_s_must_be_give;
1259 static PyObject *__pyx_kp_s_WaveTools_py_Found_not_consisten;
1260 static PyObject *__pyx_kp_s_WaveTools_py_Location_vector_for;
1261 static PyObject *__pyx_kp_s_WaveTools_py_Need_to_define_Ycoe;
1262 static PyObject *__pyx_kp_s_WaveTools_py_No_phase_array_is_g;
1263 static PyObject *__pyx_kp_s_WaveTools_py_Not_constant_sampli;
1264 static PyObject *__pyx_kp_s_WaveTools_py_Overlap_entry_in_wi;
1265 static PyObject *__pyx_kp_s_WaveTools_py_Parameters_passed_i;
1266 static PyObject *__pyx_kp_s_WaveTools_py_Phase_array_must_ha;
1267 static PyObject *__pyx_kp_s_WaveTools_py_Reading_spectra_No;
1268 static PyObject *__pyx_kp_s_WaveTools_py_Reading_timeseries;
1269 static PyObject *__pyx_kp_s_WaveTools_py_Reconstruction_is_e;
1270 static PyObject *__pyx_kp_s_WaveTools_py_Set_parameters_for;
1271 static PyObject *__pyx_kp_s_WaveTools_py_Timeseries_file_s_m;
1272 static PyObject *__pyx_kp_s_WaveTools_py_Using_s_windows_for;
1273 static PyObject *__pyx_kp_s_WaveTools_py_Wavelenght_is_not_d;
1274 static PyObject *__pyx_kp_s_WaveTools_py_Window_handover_is;
1275 static PyObject *__pyx_kp_s_WaveTools_py_Wrong_function_type;
1276 static PyObject *__pyx_kp_s_WaveTools_py_meanVelocity_should;
1277 static PyObject *__pyx_kp_s_WaveTools_py_performing_a_direct;
1278 static PyObject *__pyx_kp_s_WaveTools_py_performing_series_d;
1279 static PyObject *__pyx_kp_s_WaveTools_py_phi_argument_must_b;
1280 static PyObject *__pyx_kp_s_WaveTools_py_phi_in_DirectionalW;
1281 static PyObject *__pyx_kp_s_Wave_direction_is_not_perpendicu;
1282 static PyObject *__pyx_kp_s_Wavetools_py_Provide_valid_depth;
1283 static PyObject *__pyx_kp_s_Wavetools_py_Stopping_simulation;
1284 static PyObject *__pyx_n_s_Window;
1285 static PyObject *__pyx_kp_s_Wrong_wavetype_given_Valid_wavet;
1286 static PyObject *__pyx_n_s_Y;
1287 static PyObject *__pyx_n_s_Ycoeff;
1288 static PyObject *__pyx_n_s_Z;
1289 static PyObject *__pyx_kp_s__82;
1290 static PyObject *__pyx_n_s_a;
1291 static PyObject *__pyx_n_s_aa;
1292 static PyObject *__pyx_n_s_ai;
1293 static PyObject *__pyx_n_s_aiDirs;
1294 static PyObject *__pyx_n_s_aiM;
1295 static PyObject *__pyx_n_s_amp;
1296 static PyObject *__pyx_n_s_amplitude;
1297 static PyObject *__pyx_n_s_append;
1298 static PyObject *__pyx_n_s_array;
1299 static PyObject *__pyx_n_s_bandFactor;
1300 static PyObject *__pyx_n_s_bj;
1301 static PyObject *__pyx_n_s_close;
1302 static PyObject *__pyx_n_s_cmath;
1303 static PyObject *__pyx_n_s_copy;
1304 static PyObject *__pyx_n_s_cos;
1305 static PyObject *__pyx_n_s_cos2s;
1306 static PyObject *__pyx_n_s_cosh;
1307 static PyObject *__pyx_n_s_costap;
1308 static PyObject *__pyx_kp_s_csv;
1309 static PyObject *__pyx_n_s_cut;
1310 static PyObject *__pyx_n_s_cutoff;
1311 static PyObject *__pyx_n_s_cutoffTotal;
1312 static PyObject *__pyx_n_s_d;
1313 static PyObject *__pyx_n_s_decomp;
1314 static PyObject *__pyx_n_s_decompose_tseries;
1315 static PyObject *__pyx_n_s_decompose_window;
1316 static PyObject *__pyx_n_s_delimiter;
1317 static PyObject *__pyx_n_s_depth;
1318 static PyObject *__pyx_n_s_df;
1319 static PyObject *__pyx_n_s_diff;
1320 static PyObject *__pyx_n_s_dirCheck;
1321 static PyObject *__pyx_n_s_dircheck;
1322 static PyObject *__pyx_n_s_directions;
1323 static PyObject *__pyx_n_s_dispersion;
1324 static PyObject *__pyx_n_s_doInterp;
1325 static PyObject *__pyx_n_s_doc;
1326 static PyObject *__pyx_n_s_dt;
1327 static PyObject *__pyx_n_s_dt_temp;
1328 static PyObject *__pyx_n_s_dth;
1329 static PyObject *__pyx_n_s_eta;
1330 static PyObject *__pyx_n_s_etaDirect;
1331 static PyObject *__pyx_n_s_etaWindow;
1332 static PyObject *__pyx_n_s_eta_mode;
1333 static PyObject *__pyx_n_s_exit;
1334 static PyObject *__pyx_n_s_exp;
1335 static PyObject *__pyx_n_s_f;
1336 static PyObject *__pyx_n_s_f0;
1337 static PyObject *__pyx_n_s_fft;
1338 static PyObject *__pyx_n_s_fft_x;
1339 static PyObject *__pyx_n_s_fftfreq;
1340 static PyObject *__pyx_n_s_fi;
1341 static PyObject *__pyx_n_s_fid;
1342 static PyObject *__pyx_n_s_filetype;
1343 static PyObject *__pyx_n_s_fim;
1344 static PyObject *__pyx_n_s_fim_tmp;
1345 static PyObject *__pyx_n_s_findWindow;
1346 static PyObject *__pyx_n_s_fmax;
1347 static PyObject *__pyx_n_s_fmin;
1348 static PyObject *__pyx_n_s_fp;
1349 static PyObject *__pyx_n_s_freq;
1350 static PyObject *__pyx_n_s_fun;
1351 static PyObject *__pyx_n_s_func;
1352 static PyObject *__pyx_n_s_funcName;
1353 static PyObject *__pyx_n_s_funcNames;
1354 static PyObject *__pyx_n_s_func_ret;
1355 static PyObject *__pyx_n_s_g;
1356 static PyObject *__pyx_n_s_gAbs;
1357 static PyObject *__pyx_n_s_gamma;
1358 static PyObject *__pyx_n_s_handover;
1359 static PyObject *__pyx_kp_s_home_cekees_proteus_proteus_Wav;
1360 static PyObject *__pyx_n_s_i;
1361 static PyObject *__pyx_n_s_iend;
1362 static PyObject *__pyx_n_s_ii;
1363 static PyObject *__pyx_n_s_imax;
1364 static PyObject *__pyx_n_s_imin;
1365 static PyObject *__pyx_n_s_import;
1366 static PyObject *__pyx_n_s_init;
1367 static PyObject *__pyx_n_s_interp;
1368 static PyObject *__pyx_n_s_ipeak;
1369 static PyObject *__pyx_n_s_ispan1;
1370 static PyObject *__pyx_n_s_ispan2;
1371 static PyObject *__pyx_n_s_jj;
1372 static PyObject *__pyx_n_s_k;
1373 static PyObject *__pyx_n_s_kAbs;
1374 static PyObject *__pyx_n_s_kDir;
1375 static PyObject *__pyx_n_s_kDirM;
1376 static PyObject *__pyx_n_s_kDiri;
1377 static PyObject *__pyx_n_s_kdir;
1378 static PyObject *__pyx_n_s_ki;
1379 static PyObject *__pyx_n_s_kiM;
1380 static PyObject *__pyx_n_s_kk;
1381 static PyObject *__pyx_n_s_kmode;
1382 static PyObject *__pyx_n_s_knownWaveTypes;
1383 static PyObject *__pyx_n_s_l;
1384 static PyObject *__pyx_n_s_level;
1385 static PyObject *__pyx_n_s_linspace;
1386 static PyObject *__pyx_n_s_loadExistingFunction;
1387 static PyObject *__pyx_n_s_loadtxt;
1388 static PyObject *__pyx_n_s_log;
1389 static PyObject *__pyx_n_s_logEvent;
1390 static PyObject *__pyx_n_s_main;
1391 static PyObject *__pyx_n_s_math;
1392 static PyObject *__pyx_n_s_max;
1393 static PyObject *__pyx_n_s_mean;
1394 static PyObject *__pyx_n_s_meanVelocity;
1395 static PyObject *__pyx_n_s_metaclass;
1396 static PyObject *__pyx_n_s_mitsuyasu;
1397 static PyObject *__pyx_n_s_module;
1398 static PyObject *__pyx_n_s_mwl;
1399 static PyObject *__pyx_n_s_name;
1400 static PyObject *__pyx_n_s_ncols;
1401 static PyObject *__pyx_n_s_nfft;
1402 static PyObject *__pyx_n_s_niter;
1403 static PyObject *__pyx_n_s_nn;
1404 static PyObject *__pyx_n_s_normIntegral;
1405 static PyObject *__pyx_n_s_np;
1406 static PyObject *__pyx_n_s_npoints;
1407 static PyObject *__pyx_n_s_numpy;
1408 static PyObject *__pyx_n_s_omega;
1409 static PyObject *__pyx_n_s_omega0;
1410 static PyObject *__pyx_n_s_omegaM;
1411 static PyObject *__pyx_n_s_ones;
1412 static PyObject *__pyx_n_s_open;
1413 static PyObject *__pyx_n_s_overlap;
1414 static PyObject *__pyx_n_s_period;
1415 static PyObject *__pyx_n_s_phase;
1416 static PyObject *__pyx_n_s_phi;
1417 static PyObject *__pyx_n_s_phi0;
1418 static PyObject *__pyx_n_s_phiDirs;
1419 static PyObject *__pyx_n_s_phiM;
1420 static PyObject *__pyx_n_s_phiSymm;
1421 static PyObject *__pyx_n_s_pi;
1422 static PyObject *__pyx_n_s_pp;
1423 static PyObject *__pyx_n_s_prepare;
1424 static PyObject *__pyx_n_s_qualname;
1425 static PyObject *__pyx_n_s_r;
1426 static PyObject *__pyx_n_s_rand;
1427 static PyObject *__pyx_n_s_random;
1428 static PyObject *__pyx_n_s_range;
1429 static PyObject *__pyx_n_s_real;
1430 static PyObject *__pyx_n_s_rec_direct;
1431 static PyObject *__pyx_n_s_reduceToIntervals;
1432 static PyObject *__pyx_n_s_results;
1433 static PyObject *__pyx_n_s_returnRectangles;
1434 static PyObject *__pyx_n_s_returnRectangles3D;
1435 static PyObject *__pyx_n_s_rotation3D;
1436 static PyObject *__pyx_n_s_rr;
1437 static PyObject *__pyx_n_s_s;
1438 static PyObject *__pyx_n_s_self;
1439 static PyObject *__pyx_n_s_setDirVector;
1440 static PyObject *__pyx_n_s_setVertDir;
1441 static PyObject *__pyx_n_s_setup;
1442 static PyObject *__pyx_n_s_shape;
1443 static PyObject *__pyx_n_s_sigma;
1444 static PyObject *__pyx_n_s_sigmaReturn;
1445 static PyObject *__pyx_n_s_sin;
1446 static PyObject *__pyx_n_s_sinh;
1447 static PyObject *__pyx_n_s_skiprows;
1448 static PyObject *__pyx_n_s_smax;
1449 static PyObject *__pyx_n_s_span;
1450 static PyObject *__pyx_n_s_spec_fun;
1451 static PyObject *__pyx_n_s_spectName;
1452 static PyObject *__pyx_n_s_spectral_params;
1453 static PyObject *__pyx_n_s_spreadName;
1454 static PyObject *__pyx_n_s_spread_fun;
1455 static PyObject *__pyx_n_s_spread_params;
1456 static PyObject *__pyx_n_s_sqrt;
1457 static PyObject *__pyx_n_s_sum;
1458 static PyObject *__pyx_n_s_sys;
1459 static PyObject *__pyx_n_s_t;
1460 static PyObject *__pyx_n_s_t0;
1461 static PyObject *__pyx_n_s_tanh;
1462 static PyObject *__pyx_n_s_tdata;
1463 static PyObject *__pyx_n_s_temp_array;
1464 static PyObject *__pyx_n_s_term;
1465 static PyObject *__pyx_n_s_test;
1466 static PyObject *__pyx_n_s_tfirst;
1467 static PyObject *__pyx_n_s_th;
1468 static PyObject *__pyx_n_s_theta;
1469 static PyObject *__pyx_n_s_theta_m;
1470 static PyObject *__pyx_n_s_thetas;
1471 static PyObject *__pyx_n_s_time;
1472 static PyObject *__pyx_n_s_timeSeriesFile;
1473 static PyObject *__pyx_n_s_timeSeriesPosition;
1474 static PyObject *__pyx_n_s_time_temp;
1475 static PyObject *__pyx_n_s_tlast;
1476 static PyObject *__pyx_n_s_tlength;
1477 static PyObject *__pyx_n_s_tma;
1478 static PyObject *__pyx_n_s_tolist;
1479 static PyObject *__pyx_n_s_tophat;
1480 static PyObject *__pyx_n_s_tstart;
1481 static PyObject *__pyx_n_s_tt;
1482 static PyObject *__pyx_kp_s_txt;
1483 static PyObject *__pyx_n_s_u;
1484 static PyObject *__pyx_n_s_uDirect;
1485 static PyObject *__pyx_n_s_uWindow;
1486 static PyObject *__pyx_n_s_v1;
1487 static PyObject *__pyx_n_s_v2;
1488 static PyObject *__pyx_n_s_vDir;
1489 static PyObject *__pyx_n_s_validFunctions;
1490 static PyObject *__pyx_n_s_validSpectra;
1491 static PyObject *__pyx_n_s_validSpread;
1492 static PyObject *__pyx_n_s_validWindows;
1493 static PyObject *__pyx_n_s_vector;
1494 static PyObject *__pyx_n_s_vel_mode;
1495 static PyObject *__pyx_n_s_w;
1496 static PyObject *__pyx_n_s_w_aux;
1497 static PyObject *__pyx_n_s_waveDir;
1498 static PyObject *__pyx_n_s_waveDir0;
1499 static PyObject *__pyx_n_s_waveDirs;
1500 static PyObject *__pyx_n_s_waveHeight;
1501 static PyObject *__pyx_n_s_waveType;
1502 static PyObject *__pyx_n_s_wavelength;
1503 static PyObject *__pyx_n_s_where;
1504 static PyObject *__pyx_n_s_wind;
1505 static PyObject *__pyx_n_s_wind_filt;
1506 static PyObject *__pyx_n_s_windowName;
1507 static PyObject *__pyx_n_s_window_params;
1508 static PyObject *__pyx_n_s_windows_handover;
1509 static PyObject *__pyx_n_s_windows_rec;
1510 static PyObject *__pyx_n_s_wmode;
1511 static PyObject *__pyx_n_s_ww;
1512 static PyObject *__pyx_n_s_x;
1513 static PyObject *__pyx_n_s_x0;
1514 static PyObject *__pyx_n_s_x1;
1515 static PyObject *__pyx_n_s_y;
1516 static PyObject *__pyx_n_s_y0;
1517 static PyObject *__pyx_n_s_z0;
1518 static PyObject *__pyx_n_s_zeros;
1519 static PyObject *__pyx_n_s_zip;
1520 static PyObject *__pyx_pf_9WaveTools_loadExistingFunction(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_funcName, PyObject *__pyx_v_validFunctions); /* proto */
1521 static PyObject *__pyx_pf_9WaveTools_2setVertDir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_g); /* proto */
1522 static PyObject *__pyx_pf_9WaveTools_4setDirVector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vector); /* proto */
1523 static PyObject *__pyx_pf_9WaveTools_6dirCheck(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v1, PyObject *__pyx_v_v2); /* proto */
1524 static PyObject *__pyx_pf_9WaveTools_8reduceToIntervals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fi, PyObject *__pyx_v_df); /* proto */
1525 static PyObject *__pyx_pf_9WaveTools_10returnRectangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x); /* proto */
1526 static PyObject *__pyx_pf_9WaveTools_12returnRectangles3D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
1527 static PyObject *__pyx_pf_9WaveTools_14normIntegral(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Sint, PyObject *__pyx_v_th); /* proto */
1528 static PyObject *__pyx_pf_9WaveTools_16eta_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude); /* proto */
1529 static PyObject *__pyx_pf_9WaveTools_18vel_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_kAbs, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, CYTHON_UNUSED PyObject *__pyx_v_g, PyObject *__pyx_v_vDir); /* proto */
1530 static PyObject *__pyx_pf_9WaveTools_20sigma(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_omega, PyObject *__pyx_v_omega0); /* proto */
1531 static PyObject *__pyx_pf_9WaveTools_22JONSWAP(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs, PyObject *__pyx_v_gamma, PyObject *__pyx_v_TMA, PyObject *__pyx_v_depth); /* proto */
1532 static PyObject *__pyx_pf_9WaveTools_24PM_mod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs); /* proto */
1533 static PyObject *__pyx_pf_9WaveTools_26cos2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_f, PyObject *__pyx_v_s); /* proto */
1534 static PyObject *__pyx_pf_9WaveTools_28mitsuyasu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_fi, PyObject *__pyx_v_f0, PyObject *__pyx_v_smax); /* proto */
1535 static PyObject *__pyx_pf_9WaveTools_30dispersion(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_w, PyObject *__pyx_v_d, PyObject *__pyx_v_g, PyObject *__pyx_v_niter); /* proto */
1536 static PyObject *__pyx_pf_9WaveTools_32tophat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff); /* proto */
1537 static PyObject *__pyx_pf_9WaveTools_34costap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff); /* proto */
1538 static PyObject *__pyx_pf_9WaveTools_36decompose_tseries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_time, PyObject *__pyx_v_eta, PyObject *__pyx_v_dt); /* proto */
1539 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_6__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
1540 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_period, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_wavelength, PyObject *__pyx_v_waveType, PyObject *__pyx_v_Ycoeff, PyObject *__pyx_v_Bcoeff, PyObject *__pyx_v_meanVelocity, PyObject *__pyx_v_phi0); /* proto */
1541 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1542 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1543 static PyObject *__pyx_pf_9WaveTools_11RandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi); /* proto */
1544 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1545 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1546 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Nspectra, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi); /* proto */
1547 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1548 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1549 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_M, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir0, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spreadName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_spread_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_phiSymm); /* proto */
1550 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1551 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1552 static PyObject *__pyx_pf_9WaveTools_10TimeSeries___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeSeriesFile, PyObject *__pyx_v_skiprows, PyObject *__pyx_v_timeSeriesPosition, PyObject *__pyx_v_depth, PyObject *__pyx_v_N, PyObject *__pyx_v_mwl, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_cutoffTotal, PyObject *__pyx_v_rec_direct, PyObject *__pyx_v_window_params); /* proto */
1553 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_2etaDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1554 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_4uDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1555 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_6findWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_t); /* proto */
1556 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_8etaWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1557 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10uWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1558 static PyObject *__pyx_float_0_;
1559 static PyObject *__pyx_float_1_;
1560 static PyObject *__pyx_float_2_;
1561 static PyObject *__pyx_float_4_;
1562 static PyObject *__pyx_float_0_1;
1563 static PyObject *__pyx_float_0_5;
1564 static PyObject *__pyx_float_0_9;
1565 static PyObject *__pyx_float_1_1;
1566 static PyObject *__pyx_float_1_9;
1567 static PyObject *__pyx_float_2_0;
1568 static PyObject *__pyx_float_3_3;
1569 static PyObject *__pyx_float_0_01;
1570 static PyObject *__pyx_float_0_07;
1571 static PyObject *__pyx_float_0_09;
1572 static PyObject *__pyx_float_0_23;
1573 static PyObject *__pyx_float_0_25;
1574 static PyObject *__pyx_float_9_81;
1575 static PyObject *__pyx_float_0_185;
1576 static PyObject *__pyx_float_1_094;
1577 static PyObject *__pyx_float_1eneg_10;
1578 static PyObject *__pyx_float_0_0336;
1579 static PyObject *__pyx_float_0_0624;
1580 static PyObject *__pyx_float_0_01915;
1581 static PyObject *__pyx_float_neg_2_5;
1582 static PyObject *__pyx_float_neg_1_25;
1583 static PyObject *__pyx_int_0;
1584 static PyObject *__pyx_int_1;
1585 static PyObject *__pyx_int_2;
1586 static PyObject *__pyx_int_3;
1587 static PyObject *__pyx_int_4;
1588 static PyObject *__pyx_int_5;
1589 static PyObject *__pyx_int_10;
1590 static PyObject *__pyx_int_100;
1591 static PyObject *__pyx_int_1000;
1592 static PyObject *__pyx_int_neg_1;
1593 static PyObject *__pyx_int_neg_4;
1594 static PyObject *__pyx_tuple_;
1595 static PyObject *__pyx_slice__4;
1596 static PyObject *__pyx_slice__5;
1597 static PyObject *__pyx_slice__6;
1598 static PyObject *__pyx_slice__7;
1599 static PyObject *__pyx_slice__8;
1600 static PyObject *__pyx_slice__9;
1601 static PyObject *__pyx_tuple__2;
1602 static PyObject *__pyx_tuple__3;
1603 static PyObject *__pyx_slice__10;
1604 static PyObject *__pyx_slice__11;
1605 static PyObject *__pyx_slice__13;
1606 static PyObject *__pyx_slice__14;
1607 static PyObject *__pyx_slice__16;
1608 static PyObject *__pyx_slice__17;
1609 static PyObject *__pyx_slice__19;
1610 static PyObject *__pyx_slice__20;
1611 static PyObject *__pyx_slice__22;
1612 static PyObject *__pyx_slice__23;
1613 static PyObject *__pyx_slice__24;
1614 static PyObject *__pyx_slice__25;
1615 static PyObject *__pyx_slice__26;
1616 static PyObject *__pyx_slice__27;
1617 static PyObject *__pyx_slice__31;
1618 static PyObject *__pyx_slice__33;
1619 static PyObject *__pyx_slice__34;
1620 static PyObject *__pyx_slice__36;
1621 static PyObject *__pyx_slice__50;
1622 static PyObject *__pyx_slice__51;
1623 static PyObject *__pyx_slice__56;
1624 static PyObject *__pyx_slice__57;
1625 static PyObject *__pyx_slice__59;
1626 static PyObject *__pyx_slice__62;
1627 static PyObject *__pyx_slice__64;
1628 static PyObject *__pyx_slice__66;
1629 static PyObject *__pyx_slice__67;
1630 static PyObject *__pyx_slice__68;
1631 static PyObject *__pyx_slice__71;
1632 static PyObject *__pyx_slice__72;
1633 static PyObject *__pyx_slice__74;
1634 static PyObject *__pyx_slice__75;
1635 static PyObject *__pyx_slice__76;
1636 static PyObject *__pyx_slice__77;
1637 static PyObject *__pyx_slice__80;
1638 static PyObject *__pyx_slice__83;
1639 static PyObject *__pyx_slice__86;
1640 static PyObject *__pyx_slice__90;
1641 static PyObject *__pyx_slice__92;
1642 static PyObject *__pyx_slice__95;
1643 static PyObject *__pyx_slice__96;
1644 static PyObject *__pyx_tuple__12;
1645 static PyObject *__pyx_tuple__15;
1646 static PyObject *__pyx_tuple__18;
1647 static PyObject *__pyx_tuple__21;
1648 static PyObject *__pyx_tuple__28;
1649 static PyObject *__pyx_tuple__29;
1650 static PyObject *__pyx_tuple__30;
1651 static PyObject *__pyx_tuple__32;
1652 static PyObject *__pyx_tuple__35;
1653 static PyObject *__pyx_tuple__37;
1654 static PyObject *__pyx_tuple__38;
1655 static PyObject *__pyx_tuple__39;
1656 static PyObject *__pyx_tuple__40;
1657 static PyObject *__pyx_tuple__41;
1658 static PyObject *__pyx_tuple__42;
1659 static PyObject *__pyx_tuple__43;
1660 static PyObject *__pyx_tuple__44;
1661 static PyObject *__pyx_tuple__45;
1662 static PyObject *__pyx_tuple__46;
1663 static PyObject *__pyx_tuple__47;
1664 static PyObject *__pyx_tuple__48;
1665 static PyObject *__pyx_tuple__49;
1666 static PyObject *__pyx_tuple__52;
1667 static PyObject *__pyx_tuple__53;
1668 static PyObject *__pyx_tuple__54;
1669 static PyObject *__pyx_tuple__55;
1670 static PyObject *__pyx_tuple__58;
1671 static PyObject *__pyx_tuple__60;
1672 static PyObject *__pyx_tuple__61;
1673 static PyObject *__pyx_tuple__63;
1674 static PyObject *__pyx_tuple__65;
1675 static PyObject *__pyx_tuple__69;
1676 static PyObject *__pyx_tuple__70;
1677 static PyObject *__pyx_tuple__73;
1678 static PyObject *__pyx_tuple__78;
1679 static PyObject *__pyx_tuple__79;
1680 static PyObject *__pyx_tuple__81;
1681 static PyObject *__pyx_tuple__84;
1682 static PyObject *__pyx_tuple__85;
1683 static PyObject *__pyx_tuple__87;
1684 static PyObject *__pyx_tuple__88;
1685 static PyObject *__pyx_tuple__89;
1686 static PyObject *__pyx_tuple__91;
1687 static PyObject *__pyx_tuple__93;
1688 static PyObject *__pyx_tuple__94;
1689 static PyObject *__pyx_tuple__97;
1690 static PyObject *__pyx_tuple__98;
1691 static PyObject *__pyx_tuple__99;
1692 static PyObject *__pyx_slice__113;
1693 static PyObject *__pyx_slice__115;
1694 static PyObject *__pyx_slice__117;
1695 static PyObject *__pyx_slice__119;
1696 static PyObject *__pyx_slice__121;
1697 static PyObject *__pyx_slice__122;
1698 static PyObject *__pyx_tuple__100;
1699 static PyObject *__pyx_tuple__101;
1700 static PyObject *__pyx_tuple__102;
1701 static PyObject *__pyx_tuple__103;
1702 static PyObject *__pyx_tuple__104;
1703 static PyObject *__pyx_tuple__105;
1704 static PyObject *__pyx_tuple__106;
1705 static PyObject *__pyx_tuple__107;
1706 static PyObject *__pyx_tuple__108;
1707 static PyObject *__pyx_tuple__109;
1708 static PyObject *__pyx_tuple__110;
1709 static PyObject *__pyx_tuple__111;
1710 static PyObject *__pyx_tuple__112;
1711 static PyObject *__pyx_tuple__114;
1712 static PyObject *__pyx_tuple__116;
1713 static PyObject *__pyx_tuple__118;
1714 static PyObject *__pyx_tuple__120;
1715 static PyObject *__pyx_tuple__123;
1716 static PyObject *__pyx_tuple__124;
1717 static PyObject *__pyx_tuple__125;
1718 static PyObject *__pyx_tuple__127;
1719 static PyObject *__pyx_tuple__129;
1720 static PyObject *__pyx_tuple__131;
1721 static PyObject *__pyx_tuple__133;
1722 static PyObject *__pyx_tuple__135;
1723 static PyObject *__pyx_tuple__137;
1724 static PyObject *__pyx_tuple__139;
1725 static PyObject *__pyx_tuple__141;
1726 static PyObject *__pyx_tuple__143;
1727 static PyObject *__pyx_tuple__145;
1728 static PyObject *__pyx_tuple__147;
1729 static PyObject *__pyx_tuple__149;
1730 static PyObject *__pyx_tuple__151;
1731 static PyObject *__pyx_tuple__153;
1732 static PyObject *__pyx_tuple__155;
1733 static PyObject *__pyx_tuple__157;
1734 static PyObject *__pyx_tuple__159;
1735 static PyObject *__pyx_tuple__161;
1736 static PyObject *__pyx_tuple__163;
1737 static PyObject *__pyx_tuple__165;
1738 static PyObject *__pyx_tuple__167;
1739 static PyObject *__pyx_tuple__169;
1740 static PyObject *__pyx_tuple__171;
1741 static PyObject *__pyx_tuple__172;
1742 static PyObject *__pyx_tuple__174;
1743 static PyObject *__pyx_tuple__176;
1744 static PyObject *__pyx_tuple__178;
1745 static PyObject *__pyx_tuple__180;
1746 static PyObject *__pyx_tuple__182;
1747 static PyObject *__pyx_tuple__184;
1748 static PyObject *__pyx_tuple__185;
1749 static PyObject *__pyx_tuple__187;
1750 static PyObject *__pyx_tuple__189;
1751 static PyObject *__pyx_tuple__191;
1752 static PyObject *__pyx_tuple__192;
1753 static PyObject *__pyx_tuple__194;
1754 static PyObject *__pyx_tuple__196;
1755 static PyObject *__pyx_tuple__198;
1756 static PyObject *__pyx_tuple__200;
1757 static PyObject *__pyx_codeobj__126;
1758 static PyObject *__pyx_codeobj__128;
1759 static PyObject *__pyx_codeobj__130;
1760 static PyObject *__pyx_codeobj__132;
1761 static PyObject *__pyx_codeobj__134;
1762 static PyObject *__pyx_codeobj__136;
1763 static PyObject *__pyx_codeobj__138;
1764 static PyObject *__pyx_codeobj__140;
1765 static PyObject *__pyx_codeobj__142;
1766 static PyObject *__pyx_codeobj__144;
1767 static PyObject *__pyx_codeobj__146;
1768 static PyObject *__pyx_codeobj__148;
1769 static PyObject *__pyx_codeobj__150;
1770 static PyObject *__pyx_codeobj__152;
1771 static PyObject *__pyx_codeobj__154;
1772 static PyObject *__pyx_codeobj__156;
1773 static PyObject *__pyx_codeobj__158;
1774 static PyObject *__pyx_codeobj__160;
1775 static PyObject *__pyx_codeobj__162;
1776 static PyObject *__pyx_codeobj__164;
1777 static PyObject *__pyx_codeobj__166;
1778 static PyObject *__pyx_codeobj__168;
1779 static PyObject *__pyx_codeobj__170;
1780 static PyObject *__pyx_codeobj__173;
1781 static PyObject *__pyx_codeobj__175;
1782 static PyObject *__pyx_codeobj__177;
1783 static PyObject *__pyx_codeobj__179;
1784 static PyObject *__pyx_codeobj__181;
1785 static PyObject *__pyx_codeobj__183;
1786 static PyObject *__pyx_codeobj__186;
1787 static PyObject *__pyx_codeobj__188;
1788 static PyObject *__pyx_codeobj__190;
1789 static PyObject *__pyx_codeobj__193;
1790 static PyObject *__pyx_codeobj__195;
1791 static PyObject *__pyx_codeobj__197;
1792 static PyObject *__pyx_codeobj__199;
1793 static PyObject *__pyx_codeobj__201;
1794 
1795 /* "WaveTools.pyx":21
1796  *
1797  *
1798  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
1799  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
1800  * param: funcName : function name in form of string under consideration
1801  */
1802 
1803 /* Python wrapper */
1804 static PyObject *__pyx_pw_9WaveTools_1loadExistingFunction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
1805 static char __pyx_doc_9WaveTools_loadExistingFunction[] = "loadExistingFunction(funcName, validFunctions)\n Checks if a function name is present in a list of known functions, returns system exit if not present\n param: funcName : function name in form of string under consideration\n param: validFunctions: list of valid functions objects (not names in strings)\n\n ";
1806 static PyMethodDef __pyx_mdef_9WaveTools_1loadExistingFunction = {"loadExistingFunction", (PyCFunction)__pyx_pw_9WaveTools_1loadExistingFunction, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_loadExistingFunction};
1807 static PyObject *__pyx_pw_9WaveTools_1loadExistingFunction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
1808  PyObject *__pyx_v_funcName = 0;
1809  PyObject *__pyx_v_validFunctions = 0;
1810  int __pyx_lineno = 0;
1811  const char *__pyx_filename = NULL;
1812  int __pyx_clineno = 0;
1813  PyObject *__pyx_r = 0;
1814  __Pyx_RefNannyDeclarations
1815  __Pyx_RefNannySetupContext("loadExistingFunction (wrapper)", 0);
1816  {
1817  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_funcName,&__pyx_n_s_validFunctions,0};
1818  PyObject* values[2] = {0,0};
1819  if (unlikely(__pyx_kwds)) {
1820  Py_ssize_t kw_args;
1821  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
1822  switch (pos_args) {
1823  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
1824  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
1825  case 0: break;
1826  default: goto __pyx_L5_argtuple_error;
1827  }
1828  kw_args = PyDict_Size(__pyx_kwds);
1829  switch (pos_args) {
1830  case 0:
1831  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_funcName)) != 0)) kw_args--;
1832  else goto __pyx_L5_argtuple_error;
1833  case 1:
1834  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_validFunctions)) != 0)) kw_args--;
1835  else {
1836  __Pyx_RaiseArgtupleInvalid("loadExistingFunction", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
1837  }
1838  }
1839  if (unlikely(kw_args > 0)) {
1840  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "loadExistingFunction") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
1841  }
1842  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
1843  goto __pyx_L5_argtuple_error;
1844  } else {
1845  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
1846  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
1847  }
1848  __pyx_v_funcName = values[0];
1849  __pyx_v_validFunctions = values[1];
1850  }
1851  goto __pyx_L4_argument_unpacking_done;
1852  __pyx_L5_argtuple_error:;
1853  __Pyx_RaiseArgtupleInvalid("loadExistingFunction", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
1854  __pyx_L3_error:;
1855  __Pyx_AddTraceback("WaveTools.loadExistingFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
1856  __Pyx_RefNannyFinishContext();
1857  return NULL;
1858  __pyx_L4_argument_unpacking_done:;
1859  __pyx_r = __pyx_pf_9WaveTools_loadExistingFunction(__pyx_self, __pyx_v_funcName, __pyx_v_validFunctions);
1860 
1861  /* function exit code */
1862  __Pyx_RefNannyFinishContext();
1863  return __pyx_r;
1864 }
1865 
1866 static PyObject *__pyx_pf_9WaveTools_loadExistingFunction(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_funcName, PyObject *__pyx_v_validFunctions) {
1867  PyObject *__pyx_v_funcNames = NULL;
1868  PyObject *__pyx_v_func = NULL;
1869  PyObject *__pyx_v_func_ret = NULL;
1870  PyObject *__pyx_r = NULL;
1871  __Pyx_RefNannyDeclarations
1872  PyObject *__pyx_t_1 = NULL;
1873  Py_ssize_t __pyx_t_2;
1874  PyObject *(*__pyx_t_3)(PyObject *);
1875  PyObject *__pyx_t_4 = NULL;
1876  int __pyx_t_5;
1877  PyObject *__pyx_t_6 = NULL;
1878  int __pyx_t_7;
1879  int __pyx_t_8;
1880  PyObject *__pyx_t_9 = NULL;
1881  int __pyx_lineno = 0;
1882  const char *__pyx_filename = NULL;
1883  int __pyx_clineno = 0;
1884  __Pyx_RefNannySetupContext("loadExistingFunction", 0);
1885 
1886  /* "WaveTools.pyx":27
1887  *
1888  * """
1889  * funcNames = [] # <<<<<<<<<<<<<<
1890  * for func in validFunctions:
1891  * funcNames.append(func.__name__)
1892  */
1893  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1894  __Pyx_GOTREF(__pyx_t_1);
1895  __pyx_v_funcNames = ((PyObject*)__pyx_t_1);
1896  __pyx_t_1 = 0;
1897 
1898  /* "WaveTools.pyx":28
1899  * """
1900  * funcNames = []
1901  * for func in validFunctions: # <<<<<<<<<<<<<<
1902  * funcNames.append(func.__name__)
1903  * if func.__name__ == funcName:
1904  */
1905  if (likely(PyList_CheckExact(__pyx_v_validFunctions)) || PyTuple_CheckExact(__pyx_v_validFunctions)) {
1906  __pyx_t_1 = __pyx_v_validFunctions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
1907  __pyx_t_3 = NULL;
1908  } else {
1909  __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_validFunctions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1910  __Pyx_GOTREF(__pyx_t_1);
1911  __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1912  }
1913  for (;;) {
1914  if (likely(!__pyx_t_3)) {
1915  if (likely(PyList_CheckExact(__pyx_t_1))) {
1916  if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
1917  #if CYTHON_COMPILING_IN_CPYTHON
1918  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1919  #else
1920  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1921  __Pyx_GOTREF(__pyx_t_4);
1922  #endif
1923  } else {
1924  if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
1925  #if CYTHON_COMPILING_IN_CPYTHON
1926  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1927  #else
1928  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1929  __Pyx_GOTREF(__pyx_t_4);
1930  #endif
1931  }
1932  } else {
1933  __pyx_t_4 = __pyx_t_3(__pyx_t_1);
1934  if (unlikely(!__pyx_t_4)) {
1935  PyObject* exc_type = PyErr_Occurred();
1936  if (exc_type) {
1937  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
1938  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1939  }
1940  break;
1941  }
1942  __Pyx_GOTREF(__pyx_t_4);
1943  }
1944  __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_4);
1945  __pyx_t_4 = 0;
1946 
1947  /* "WaveTools.pyx":29
1948  * funcNames = []
1949  * for func in validFunctions:
1950  * funcNames.append(func.__name__) # <<<<<<<<<<<<<<
1951  * if func.__name__ == funcName:
1952  * func_ret = func
1953  */
1954  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_func, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1955  __Pyx_GOTREF(__pyx_t_4);
1956  __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_funcNames, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1957  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1958 
1959  /* "WaveTools.pyx":30
1960  * for func in validFunctions:
1961  * funcNames.append(func.__name__)
1962  * if func.__name__ == funcName: # <<<<<<<<<<<<<<
1963  * func_ret = func
1964  * if funcName not in funcNames:
1965  */
1966  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_func, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1967  __Pyx_GOTREF(__pyx_t_4);
1968  __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_funcName, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1969  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1970  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1971  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
1972  if (__pyx_t_7) {
1973 
1974  /* "WaveTools.pyx":31
1975  * funcNames.append(func.__name__)
1976  * if func.__name__ == funcName:
1977  * func_ret = func # <<<<<<<<<<<<<<
1978  * if funcName not in funcNames:
1979  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
1980  */
1981  __Pyx_INCREF(__pyx_v_func);
1982  __Pyx_XDECREF_SET(__pyx_v_func_ret, __pyx_v_func);
1983 
1984  /* "WaveTools.pyx":30
1985  * for func in validFunctions:
1986  * funcNames.append(func.__name__)
1987  * if func.__name__ == funcName: # <<<<<<<<<<<<<<
1988  * func_ret = func
1989  * if funcName not in funcNames:
1990  */
1991  }
1992 
1993  /* "WaveTools.pyx":28
1994  * """
1995  * funcNames = []
1996  * for func in validFunctions: # <<<<<<<<<<<<<<
1997  * funcNames.append(func.__name__)
1998  * if func.__name__ == funcName:
1999  */
2000  }
2001  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2002 
2003  /* "WaveTools.pyx":32
2004  * if func.__name__ == funcName:
2005  * func_ret = func
2006  * if funcName not in funcNames: # <<<<<<<<<<<<<<
2007  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2008  * sys.exit(1)
2009  */
2010  __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_v_funcName, __pyx_v_funcNames, Py_NE)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2011  __pyx_t_8 = (__pyx_t_7 != 0);
2012  if (__pyx_t_8) {
2013 
2014  /* "WaveTools.pyx":33
2015  * func_ret = func
2016  * if funcName not in funcNames:
2017  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0) # <<<<<<<<<<<<<<
2018  * sys.exit(1)
2019  * return func_ret
2020  */
2021  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2022  __Pyx_GOTREF(__pyx_t_1);
2023  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2024  __Pyx_GOTREF(__pyx_t_6);
2025  __Pyx_INCREF(__pyx_v_funcName);
2026  __Pyx_GIVEREF(__pyx_v_funcName);
2027  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_funcName);
2028  __Pyx_INCREF(__pyx_v_funcNames);
2029  __Pyx_GIVEREF(__pyx_v_funcNames);
2030  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_funcNames);
2031  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Wrong_function_type, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2032  __Pyx_GOTREF(__pyx_t_4);
2033  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2034  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2035  __Pyx_GOTREF(__pyx_t_6);
2036  __Pyx_GIVEREF(__pyx_t_4);
2037  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
2038  __pyx_t_4 = 0;
2039  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2040  __Pyx_GOTREF(__pyx_t_4);
2041  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2042  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2043  __Pyx_GOTREF(__pyx_t_9);
2044  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2045  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2046  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2047  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
2048 
2049  /* "WaveTools.pyx":34
2050  * if funcName not in funcNames:
2051  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2052  * sys.exit(1) # <<<<<<<<<<<<<<
2053  * return func_ret
2054  *
2055  */
2056  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2057  __Pyx_GOTREF(__pyx_t_9);
2058  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2059  __Pyx_GOTREF(__pyx_t_4);
2060  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
2061  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2062  __Pyx_GOTREF(__pyx_t_9);
2063  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2064  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
2065 
2066  /* "WaveTools.pyx":32
2067  * if func.__name__ == funcName:
2068  * func_ret = func
2069  * if funcName not in funcNames: # <<<<<<<<<<<<<<
2070  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2071  * sys.exit(1)
2072  */
2073  }
2074 
2075  /* "WaveTools.pyx":35
2076  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2077  * sys.exit(1)
2078  * return func_ret # <<<<<<<<<<<<<<
2079  *
2080  *
2081  */
2082  __Pyx_XDECREF(__pyx_r);
2083  if (unlikely(!__pyx_v_func_ret)) { __Pyx_RaiseUnboundLocalError("func_ret"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
2084  __Pyx_INCREF(__pyx_v_func_ret);
2085  __pyx_r = __pyx_v_func_ret;
2086  goto __pyx_L0;
2087 
2088  /* "WaveTools.pyx":21
2089  *
2090  *
2091  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
2092  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
2093  * param: funcName : function name in form of string under consideration
2094  */
2095 
2096  /* function exit code */
2097  __pyx_L1_error:;
2098  __Pyx_XDECREF(__pyx_t_1);
2099  __Pyx_XDECREF(__pyx_t_4);
2100  __Pyx_XDECREF(__pyx_t_6);
2101  __Pyx_XDECREF(__pyx_t_9);
2102  __Pyx_AddTraceback("WaveTools.loadExistingFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
2103  __pyx_r = NULL;
2104  __pyx_L0:;
2105  __Pyx_XDECREF(__pyx_v_funcNames);
2106  __Pyx_XDECREF(__pyx_v_func);
2107  __Pyx_XDECREF(__pyx_v_func_ret);
2108  __Pyx_XGIVEREF(__pyx_r);
2109  __Pyx_RefNannyFinishContext();
2110  return __pyx_r;
2111 }
2112 
2113 /* "WaveTools.pyx":39
2114  *
2115  *
2116  * def setVertDir(g): # <<<<<<<<<<<<<<
2117  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
2118  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
2119  */
2120 
2121 /* Python wrapper */
2122 static PyObject *__pyx_pw_9WaveTools_3setVertDir(PyObject *__pyx_self, PyObject *__pyx_v_g); /*proto*/
2123 static char __pyx_doc_9WaveTools_2setVertDir[] = "setVertDir(g)\n Sets the unit vector for the vertical direction, opposite to the gravity vector\n param: g : gravitational acceleration vector [L/T^2] (must have 3 components)\n ";
2124 static PyMethodDef __pyx_mdef_9WaveTools_3setVertDir = {"setVertDir", (PyCFunction)__pyx_pw_9WaveTools_3setVertDir, METH_O, __pyx_doc_9WaveTools_2setVertDir};
2125 static PyObject *__pyx_pw_9WaveTools_3setVertDir(PyObject *__pyx_self, PyObject *__pyx_v_g) {
2126  PyObject *__pyx_r = 0;
2127  __Pyx_RefNannyDeclarations
2128  __Pyx_RefNannySetupContext("setVertDir (wrapper)", 0);
2129  __pyx_r = __pyx_pf_9WaveTools_2setVertDir(__pyx_self, ((PyObject *)__pyx_v_g));
2130 
2131  /* function exit code */
2132  __Pyx_RefNannyFinishContext();
2133  return __pyx_r;
2134 }
2135 
2136 static PyObject *__pyx_pf_9WaveTools_2setVertDir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_g) {
2137  PyObject *__pyx_r = NULL;
2138  __Pyx_RefNannyDeclarations
2139  PyObject *__pyx_t_1 = NULL;
2140  PyObject *__pyx_t_2 = NULL;
2141  PyObject *__pyx_t_3 = NULL;
2142  PyObject *__pyx_t_4 = NULL;
2143  PyObject *__pyx_t_5 = NULL;
2144  PyObject *__pyx_t_6 = NULL;
2145  int __pyx_lineno = 0;
2146  const char *__pyx_filename = NULL;
2147  int __pyx_clineno = 0;
2148  __Pyx_RefNannySetupContext("setVertDir", 0);
2149 
2150  /* "WaveTools.pyx":43
2151  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
2152  * """
2153  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2)) # <<<<<<<<<<<<<<
2154  *
2155  * def setDirVector(vector):
2156  */
2157  __Pyx_XDECREF(__pyx_r);
2158  __pyx_t_1 = PyNumber_Negative(__pyx_v_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2159  __Pyx_GOTREF(__pyx_t_1);
2160  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2161  __Pyx_GOTREF(__pyx_t_3);
2162  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_g, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2163  __Pyx_GOTREF(__pyx_t_4);
2164  __pyx_t_5 = PyNumber_Power(__pyx_t_4, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2165  __Pyx_GOTREF(__pyx_t_5);
2166  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2167  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_g, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2168  __Pyx_GOTREF(__pyx_t_4);
2169  __pyx_t_6 = PyNumber_Power(__pyx_t_4, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2170  __Pyx_GOTREF(__pyx_t_6);
2171  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2172  __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2173  __Pyx_GOTREF(__pyx_t_4);
2174  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2175  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2176  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_g, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2177  __Pyx_GOTREF(__pyx_t_6);
2178  __pyx_t_5 = PyNumber_Power(__pyx_t_6, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2179  __Pyx_GOTREF(__pyx_t_5);
2180  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2181  __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2182  __Pyx_GOTREF(__pyx_t_6);
2183  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2184  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2185  __pyx_t_5 = NULL;
2186  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
2187  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
2188  if (likely(__pyx_t_5)) {
2189  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
2190  __Pyx_INCREF(__pyx_t_5);
2191  __Pyx_INCREF(function);
2192  __Pyx_DECREF_SET(__pyx_t_3, function);
2193  }
2194  }
2195  if (!__pyx_t_5) {
2196  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2197  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2198  __Pyx_GOTREF(__pyx_t_2);
2199  } else {
2200  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2201  __Pyx_GOTREF(__pyx_t_4);
2202  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
2203  __Pyx_GIVEREF(__pyx_t_6);
2204  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
2205  __pyx_t_6 = 0;
2206  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2207  __Pyx_GOTREF(__pyx_t_2);
2208  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2209  }
2210  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2211  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2212  __Pyx_GOTREF(__pyx_t_3);
2213  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2214  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2215  __pyx_r = __pyx_t_3;
2216  __pyx_t_3 = 0;
2217  goto __pyx_L0;
2218 
2219  /* "WaveTools.pyx":39
2220  *
2221  *
2222  * def setVertDir(g): # <<<<<<<<<<<<<<
2223  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
2224  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
2225  */
2226 
2227  /* function exit code */
2228  __pyx_L1_error:;
2229  __Pyx_XDECREF(__pyx_t_1);
2230  __Pyx_XDECREF(__pyx_t_2);
2231  __Pyx_XDECREF(__pyx_t_3);
2232  __Pyx_XDECREF(__pyx_t_4);
2233  __Pyx_XDECREF(__pyx_t_5);
2234  __Pyx_XDECREF(__pyx_t_6);
2235  __Pyx_AddTraceback("WaveTools.setVertDir", __pyx_clineno, __pyx_lineno, __pyx_filename);
2236  __pyx_r = NULL;
2237  __pyx_L0:;
2238  __Pyx_XGIVEREF(__pyx_r);
2239  __Pyx_RefNannyFinishContext();
2240  return __pyx_r;
2241 }
2242 
2243 /* "WaveTools.pyx":45
2244  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
2245  *
2246  * def setDirVector(vector): # <<<<<<<<<<<<<<
2247  * """ Returns the direction of a vector in the form of a unit vector
2248  * param: vector : Any vector with three components
2249  */
2250 
2251 /* Python wrapper */
2252 static PyObject *__pyx_pw_9WaveTools_5setDirVector(PyObject *__pyx_self, PyObject *__pyx_v_vector); /*proto*/
2253 static char __pyx_doc_9WaveTools_4setDirVector[] = "setDirVector(vector)\n Returns the direction of a vector in the form of a unit vector\n param: vector : Any vector with three components\n ";
2254 static PyMethodDef __pyx_mdef_9WaveTools_5setDirVector = {"setDirVector", (PyCFunction)__pyx_pw_9WaveTools_5setDirVector, METH_O, __pyx_doc_9WaveTools_4setDirVector};
2255 static PyObject *__pyx_pw_9WaveTools_5setDirVector(PyObject *__pyx_self, PyObject *__pyx_v_vector) {
2256  PyObject *__pyx_r = 0;
2257  __Pyx_RefNannyDeclarations
2258  __Pyx_RefNannySetupContext("setDirVector (wrapper)", 0);
2259  __pyx_r = __pyx_pf_9WaveTools_4setDirVector(__pyx_self, ((PyObject *)__pyx_v_vector));
2260 
2261  /* function exit code */
2262  __Pyx_RefNannyFinishContext();
2263  return __pyx_r;
2264 }
2265 
2266 static PyObject *__pyx_pf_9WaveTools_4setDirVector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vector) {
2267  PyObject *__pyx_r = NULL;
2268  __Pyx_RefNannyDeclarations
2269  PyObject *__pyx_t_1 = NULL;
2270  PyObject *__pyx_t_2 = NULL;
2271  PyObject *__pyx_t_3 = NULL;
2272  PyObject *__pyx_t_4 = NULL;
2273  PyObject *__pyx_t_5 = NULL;
2274  int __pyx_lineno = 0;
2275  const char *__pyx_filename = NULL;
2276  int __pyx_clineno = 0;
2277  __Pyx_RefNannySetupContext("setDirVector", 0);
2278 
2279  /* "WaveTools.pyx":49
2280  * param: vector : Any vector with three components
2281  * """
2282  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2)) # <<<<<<<<<<<<<<
2283  *
2284  * def dirCheck(v1, v2):
2285  */
2286  __Pyx_XDECREF(__pyx_r);
2287  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2288  __Pyx_GOTREF(__pyx_t_2);
2289  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vector, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2290  __Pyx_GOTREF(__pyx_t_3);
2291  __pyx_t_4 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2292  __Pyx_GOTREF(__pyx_t_4);
2293  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2294  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vector, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2295  __Pyx_GOTREF(__pyx_t_3);
2296  __pyx_t_5 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2297  __Pyx_GOTREF(__pyx_t_5);
2298  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2299  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2300  __Pyx_GOTREF(__pyx_t_3);
2301  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2302  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2303  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_vector, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2304  __Pyx_GOTREF(__pyx_t_5);
2305  __pyx_t_4 = PyNumber_Power(__pyx_t_5, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2306  __Pyx_GOTREF(__pyx_t_4);
2307  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2308  __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2309  __Pyx_GOTREF(__pyx_t_5);
2310  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2311  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2312  __pyx_t_4 = NULL;
2313  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
2314  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
2315  if (likely(__pyx_t_4)) {
2316  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
2317  __Pyx_INCREF(__pyx_t_4);
2318  __Pyx_INCREF(function);
2319  __Pyx_DECREF_SET(__pyx_t_2, function);
2320  }
2321  }
2322  if (!__pyx_t_4) {
2323  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2324  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2325  __Pyx_GOTREF(__pyx_t_1);
2326  } else {
2327  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2328  __Pyx_GOTREF(__pyx_t_3);
2329  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
2330  __Pyx_GIVEREF(__pyx_t_5);
2331  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
2332  __pyx_t_5 = 0;
2333  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2334  __Pyx_GOTREF(__pyx_t_1);
2335  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2336  }
2337  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2338  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_vector, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2339  __Pyx_GOTREF(__pyx_t_2);
2340  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2341  __pyx_r = __pyx_t_2;
2342  __pyx_t_2 = 0;
2343  goto __pyx_L0;
2344 
2345  /* "WaveTools.pyx":45
2346  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
2347  *
2348  * def setDirVector(vector): # <<<<<<<<<<<<<<
2349  * """ Returns the direction of a vector in the form of a unit vector
2350  * param: vector : Any vector with three components
2351  */
2352 
2353  /* function exit code */
2354  __pyx_L1_error:;
2355  __Pyx_XDECREF(__pyx_t_1);
2356  __Pyx_XDECREF(__pyx_t_2);
2357  __Pyx_XDECREF(__pyx_t_3);
2358  __Pyx_XDECREF(__pyx_t_4);
2359  __Pyx_XDECREF(__pyx_t_5);
2360  __Pyx_AddTraceback("WaveTools.setDirVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
2361  __pyx_r = NULL;
2362  __pyx_L0:;
2363  __Pyx_XGIVEREF(__pyx_r);
2364  __Pyx_RefNannyFinishContext();
2365  return __pyx_r;
2366 }
2367 
2368 /* "WaveTools.pyx":51
2369  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
2370  *
2371  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
2372  * """ Checks if to vectors are vertical and returns system exit if not
2373  * param: v1 : 1st vector [-] with three components
2374  */
2375 
2376 /* Python wrapper */
2377 static PyObject *__pyx_pw_9WaveTools_7dirCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2378 static char __pyx_doc_9WaveTools_6dirCheck[] = "dirCheck(v1, v2)\n Checks if to vectors are vertical and returns system exit if not\n param: v1 : 1st vector [-] with three components\n param: v2 : 2nd vector [-] with three components\n ";
2379 static PyMethodDef __pyx_mdef_9WaveTools_7dirCheck = {"dirCheck", (PyCFunction)__pyx_pw_9WaveTools_7dirCheck, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_6dirCheck};
2380 static PyObject *__pyx_pw_9WaveTools_7dirCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2381  PyObject *__pyx_v_v1 = 0;
2382  PyObject *__pyx_v_v2 = 0;
2383  int __pyx_lineno = 0;
2384  const char *__pyx_filename = NULL;
2385  int __pyx_clineno = 0;
2386  PyObject *__pyx_r = 0;
2387  __Pyx_RefNannyDeclarations
2388  __Pyx_RefNannySetupContext("dirCheck (wrapper)", 0);
2389  {
2390  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v1,&__pyx_n_s_v2,0};
2391  PyObject* values[2] = {0,0};
2392  if (unlikely(__pyx_kwds)) {
2393  Py_ssize_t kw_args;
2394  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2395  switch (pos_args) {
2396  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2397  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2398  case 0: break;
2399  default: goto __pyx_L5_argtuple_error;
2400  }
2401  kw_args = PyDict_Size(__pyx_kwds);
2402  switch (pos_args) {
2403  case 0:
2404  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v1)) != 0)) kw_args--;
2405  else goto __pyx_L5_argtuple_error;
2406  case 1:
2407  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v2)) != 0)) kw_args--;
2408  else {
2409  __Pyx_RaiseArgtupleInvalid("dirCheck", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2410  }
2411  }
2412  if (unlikely(kw_args > 0)) {
2413  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dirCheck") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2414  }
2415  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
2416  goto __pyx_L5_argtuple_error;
2417  } else {
2418  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2419  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2420  }
2421  __pyx_v_v1 = values[0];
2422  __pyx_v_v2 = values[1];
2423  }
2424  goto __pyx_L4_argument_unpacking_done;
2425  __pyx_L5_argtuple_error:;
2426  __Pyx_RaiseArgtupleInvalid("dirCheck", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2427  __pyx_L3_error:;
2428  __Pyx_AddTraceback("WaveTools.dirCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
2429  __Pyx_RefNannyFinishContext();
2430  return NULL;
2431  __pyx_L4_argument_unpacking_done:;
2432  __pyx_r = __pyx_pf_9WaveTools_6dirCheck(__pyx_self, __pyx_v_v1, __pyx_v_v2);
2433 
2434  /* function exit code */
2435  __Pyx_RefNannyFinishContext();
2436  return __pyx_r;
2437 }
2438 
2439 static PyObject *__pyx_pf_9WaveTools_6dirCheck(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v1, PyObject *__pyx_v_v2) {
2440  PyObject *__pyx_v_dircheck = NULL;
2441  PyObject *__pyx_r = NULL;
2442  __Pyx_RefNannyDeclarations
2443  PyObject *__pyx_t_1 = NULL;
2444  PyObject *__pyx_t_2 = NULL;
2445  PyObject *__pyx_t_3 = NULL;
2446  PyObject *__pyx_t_4 = NULL;
2447  int __pyx_t_5;
2448  int __pyx_lineno = 0;
2449  const char *__pyx_filename = NULL;
2450  int __pyx_clineno = 0;
2451  __Pyx_RefNannySetupContext("dirCheck", 0);
2452 
2453  /* "WaveTools.pyx":56
2454  * param: v2 : 2nd vector [-] with three components
2455  * """
2456  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]) # <<<<<<<<<<<<<<
2457  * #print self.dircheck
2458  * if dircheck > 1e-10:
2459  */
2460  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2461  __Pyx_GOTREF(__pyx_t_1);
2462  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2463  __Pyx_GOTREF(__pyx_t_2);
2464  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2465  __Pyx_GOTREF(__pyx_t_3);
2466  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2467  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2468  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2469  __Pyx_GOTREF(__pyx_t_2);
2470  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2471  __Pyx_GOTREF(__pyx_t_1);
2472  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2473  __Pyx_GOTREF(__pyx_t_4);
2474  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2475  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2476  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2477  __Pyx_GOTREF(__pyx_t_1);
2478  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2479  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2480  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_v1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2481  __Pyx_GOTREF(__pyx_t_4);
2482  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_v2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2483  __Pyx_GOTREF(__pyx_t_3);
2484  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2485  __Pyx_GOTREF(__pyx_t_2);
2486  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2487  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2488  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2489  __Pyx_GOTREF(__pyx_t_3);
2490  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2491  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2492  __pyx_t_2 = PyNumber_Absolute(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2493  __Pyx_GOTREF(__pyx_t_2);
2494  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2495  __pyx_v_dircheck = __pyx_t_2;
2496  __pyx_t_2 = 0;
2497 
2498  /* "WaveTools.pyx":58
2499  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])
2500  * #print self.dircheck
2501  * if dircheck > 1e-10: # <<<<<<<<<<<<<<
2502  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
2503  * return sys.exit(1)
2504  */
2505  __pyx_t_2 = PyObject_RichCompare(__pyx_v_dircheck, __pyx_float_1eneg_10, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2506  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2507  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2508  if (__pyx_t_5) {
2509 
2510  /* "WaveTools.pyx":59
2511  * #print self.dircheck
2512  * if dircheck > 1e-10:
2513  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0) # <<<<<<<<<<<<<<
2514  * return sys.exit(1)
2515  * else:
2516  */
2517  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2518  __Pyx_GOTREF(__pyx_t_2);
2519  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2520  __Pyx_GOTREF(__pyx_t_3);
2521  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2522  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2523  __Pyx_GOTREF(__pyx_t_1);
2524  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2525  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2526  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2527 
2528  /* "WaveTools.pyx":60
2529  * if dircheck > 1e-10:
2530  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
2531  * return sys.exit(1) # <<<<<<<<<<<<<<
2532  * else:
2533  * return None
2534  */
2535  __Pyx_XDECREF(__pyx_r);
2536  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2537  __Pyx_GOTREF(__pyx_t_1);
2538  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2539  __Pyx_GOTREF(__pyx_t_3);
2540  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2541  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2542  __Pyx_GOTREF(__pyx_t_1);
2543  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2544  __pyx_r = __pyx_t_1;
2545  __pyx_t_1 = 0;
2546  goto __pyx_L0;
2547 
2548  /* "WaveTools.pyx":58
2549  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])
2550  * #print self.dircheck
2551  * if dircheck > 1e-10: # <<<<<<<<<<<<<<
2552  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
2553  * return sys.exit(1)
2554  */
2555  }
2556 
2557  /* "WaveTools.pyx":62
2558  * return sys.exit(1)
2559  * else:
2560  * return None # <<<<<<<<<<<<<<
2561  * def reduceToIntervals(fi,df):
2562  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
2563  */
2564  /*else*/ {
2565  __Pyx_XDECREF(__pyx_r);
2566  __Pyx_INCREF(Py_None);
2567  __pyx_r = Py_None;
2568  goto __pyx_L0;
2569  }
2570 
2571  /* "WaveTools.pyx":51
2572  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
2573  *
2574  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
2575  * """ Checks if to vectors are vertical and returns system exit if not
2576  * param: v1 : 1st vector [-] with three components
2577  */
2578 
2579  /* function exit code */
2580  __pyx_L1_error:;
2581  __Pyx_XDECREF(__pyx_t_1);
2582  __Pyx_XDECREF(__pyx_t_2);
2583  __Pyx_XDECREF(__pyx_t_3);
2584  __Pyx_XDECREF(__pyx_t_4);
2585  __Pyx_AddTraceback("WaveTools.dirCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
2586  __pyx_r = NULL;
2587  __pyx_L0:;
2588  __Pyx_XDECREF(__pyx_v_dircheck);
2589  __Pyx_XGIVEREF(__pyx_r);
2590  __Pyx_RefNannyFinishContext();
2591  return __pyx_r;
2592 }
2593 
2594 /* "WaveTools.pyx":63
2595  * else:
2596  * return None
2597  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
2598  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
2599  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
2600  */
2601 
2602 /* Python wrapper */
2603 static PyObject *__pyx_pw_9WaveTools_9reduceToIntervals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2604 static char __pyx_doc_9WaveTools_8reduceToIntervals[] = "reduceToIntervals(fi, df)\n Prepares the x- axis array of size N for numerical integration along he x- axis. \n If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array \n [a1, 0.5(a1+a2), 0.5(a2+a3),...0.5(a_N-1+a_N), a_N]. Input array must have constant step\n param: fi : x- array [-]\n param: df : dx constant step of array [-]\n ";
2605 static PyMethodDef __pyx_mdef_9WaveTools_9reduceToIntervals = {"reduceToIntervals", (PyCFunction)__pyx_pw_9WaveTools_9reduceToIntervals, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_8reduceToIntervals};
2606 static PyObject *__pyx_pw_9WaveTools_9reduceToIntervals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2607  PyObject *__pyx_v_fi = 0;
2608  PyObject *__pyx_v_df = 0;
2609  int __pyx_lineno = 0;
2610  const char *__pyx_filename = NULL;
2611  int __pyx_clineno = 0;
2612  PyObject *__pyx_r = 0;
2613  __Pyx_RefNannyDeclarations
2614  __Pyx_RefNannySetupContext("reduceToIntervals (wrapper)", 0);
2615  {
2616  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fi,&__pyx_n_s_df,0};
2617  PyObject* values[2] = {0,0};
2618  if (unlikely(__pyx_kwds)) {
2619  Py_ssize_t kw_args;
2620  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2621  switch (pos_args) {
2622  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2623  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2624  case 0: break;
2625  default: goto __pyx_L5_argtuple_error;
2626  }
2627  kw_args = PyDict_Size(__pyx_kwds);
2628  switch (pos_args) {
2629  case 0:
2630  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
2631  else goto __pyx_L5_argtuple_error;
2632  case 1:
2633  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_df)) != 0)) kw_args--;
2634  else {
2635  __Pyx_RaiseArgtupleInvalid("reduceToIntervals", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2636  }
2637  }
2638  if (unlikely(kw_args > 0)) {
2639  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reduceToIntervals") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2640  }
2641  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
2642  goto __pyx_L5_argtuple_error;
2643  } else {
2644  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2645  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2646  }
2647  __pyx_v_fi = values[0];
2648  __pyx_v_df = values[1];
2649  }
2650  goto __pyx_L4_argument_unpacking_done;
2651  __pyx_L5_argtuple_error:;
2652  __Pyx_RaiseArgtupleInvalid("reduceToIntervals", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2653  __pyx_L3_error:;
2654  __Pyx_AddTraceback("WaveTools.reduceToIntervals", __pyx_clineno, __pyx_lineno, __pyx_filename);
2655  __Pyx_RefNannyFinishContext();
2656  return NULL;
2657  __pyx_L4_argument_unpacking_done:;
2658  __pyx_r = __pyx_pf_9WaveTools_8reduceToIntervals(__pyx_self, __pyx_v_fi, __pyx_v_df);
2659 
2660  /* function exit code */
2661  __Pyx_RefNannyFinishContext();
2662  return __pyx_r;
2663 }
2664 
2665 static PyObject *__pyx_pf_9WaveTools_8reduceToIntervals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fi, PyObject *__pyx_v_df) {
2666  PyObject *__pyx_v_fim_tmp = NULL;
2667  PyObject *__pyx_r = NULL;
2668  __Pyx_RefNannyDeclarations
2669  PyObject *__pyx_t_1 = NULL;
2670  PyObject *__pyx_t_2 = NULL;
2671  PyObject *__pyx_t_3 = NULL;
2672  PyObject *__pyx_t_4 = NULL;
2673  PyObject *__pyx_t_5 = NULL;
2674  PyObject *__pyx_t_6 = NULL;
2675  int __pyx_lineno = 0;
2676  const char *__pyx_filename = NULL;
2677  int __pyx_clineno = 0;
2678  __Pyx_RefNannySetupContext("reduceToIntervals", 0);
2679 
2680  /* "WaveTools.pyx":70
2681  * param: df : dx constant step of array [-]
2682  * """
2683  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist() # <<<<<<<<<<<<<<
2684  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
2685  * def returnRectangles(a,x):
2686  */
2687  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 1, 0, NULL, NULL, &__pyx_slice__4, 1, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2688  __Pyx_GOTREF(__pyx_t_2);
2689  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2690  __Pyx_GOTREF(__pyx_t_3);
2691  __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2692  __Pyx_GOTREF(__pyx_t_4);
2693  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2694  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2695  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2696  __Pyx_GOTREF(__pyx_t_3);
2697  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2698  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tolist); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2699  __Pyx_GOTREF(__pyx_t_4);
2700  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2701  __pyx_t_3 = NULL;
2702  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
2703  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
2704  if (likely(__pyx_t_3)) {
2705  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
2706  __Pyx_INCREF(__pyx_t_3);
2707  __Pyx_INCREF(function);
2708  __Pyx_DECREF_SET(__pyx_t_4, function);
2709  }
2710  }
2711  if (__pyx_t_3) {
2712  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2713  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2714  } else {
2715  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2716  }
2717  __Pyx_GOTREF(__pyx_t_1);
2718  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2719  __pyx_v_fim_tmp = __pyx_t_1;
2720  __pyx_t_1 = 0;
2721 
2722  /* "WaveTools.pyx":71
2723  * """
2724  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
2725  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df]) # <<<<<<<<<<<<<<
2726  * def returnRectangles(a,x):
2727  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
2728  */
2729  __Pyx_XDECREF(__pyx_r);
2730  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2731  __Pyx_GOTREF(__pyx_t_4);
2732  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2733  __Pyx_GOTREF(__pyx_t_3);
2734  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2735  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_fim_tmp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2736  __Pyx_GOTREF(__pyx_t_4);
2737  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_df); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2738  __Pyx_GOTREF(__pyx_t_2);
2739  __pyx_t_5 = PyNumber_Subtract(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2740  __Pyx_GOTREF(__pyx_t_5);
2741  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2742  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2743  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2744  __Pyx_GOTREF(__pyx_t_2);
2745  __Pyx_GIVEREF(__pyx_t_5);
2746  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
2747  __pyx_t_5 = 0;
2748  __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_v_fim_tmp); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2749  __Pyx_GOTREF(__pyx_t_5);
2750  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2751  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_fim_tmp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2752  __Pyx_GOTREF(__pyx_t_2);
2753  __pyx_t_4 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_df); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2754  __Pyx_GOTREF(__pyx_t_4);
2755  __pyx_t_6 = PyNumber_Add(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2756  __Pyx_GOTREF(__pyx_t_6);
2757  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2758  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2759  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2760  __Pyx_GOTREF(__pyx_t_4);
2761  __Pyx_GIVEREF(__pyx_t_6);
2762  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
2763  __pyx_t_6 = 0;
2764  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2765  __Pyx_GOTREF(__pyx_t_6);
2766  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2767  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2768  __pyx_t_4 = NULL;
2769  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
2770  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
2771  if (likely(__pyx_t_4)) {
2772  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
2773  __Pyx_INCREF(__pyx_t_4);
2774  __Pyx_INCREF(function);
2775  __Pyx_DECREF_SET(__pyx_t_3, function);
2776  }
2777  }
2778  if (!__pyx_t_4) {
2779  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2780  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2781  __Pyx_GOTREF(__pyx_t_1);
2782  } else {
2783  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2784  __Pyx_GOTREF(__pyx_t_5);
2785  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
2786  __Pyx_GIVEREF(__pyx_t_6);
2787  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
2788  __pyx_t_6 = 0;
2789  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2790  __Pyx_GOTREF(__pyx_t_1);
2791  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2792  }
2793  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2794  __pyx_r = __pyx_t_1;
2795  __pyx_t_1 = 0;
2796  goto __pyx_L0;
2797 
2798  /* "WaveTools.pyx":63
2799  * else:
2800  * return None
2801  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
2802  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
2803  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
2804  */
2805 
2806  /* function exit code */
2807  __pyx_L1_error:;
2808  __Pyx_XDECREF(__pyx_t_1);
2809  __Pyx_XDECREF(__pyx_t_2);
2810  __Pyx_XDECREF(__pyx_t_3);
2811  __Pyx_XDECREF(__pyx_t_4);
2812  __Pyx_XDECREF(__pyx_t_5);
2813  __Pyx_XDECREF(__pyx_t_6);
2814  __Pyx_AddTraceback("WaveTools.reduceToIntervals", __pyx_clineno, __pyx_lineno, __pyx_filename);
2815  __pyx_r = NULL;
2816  __pyx_L0:;
2817  __Pyx_XDECREF(__pyx_v_fim_tmp);
2818  __Pyx_XGIVEREF(__pyx_r);
2819  __Pyx_RefNannyFinishContext();
2820  return __pyx_r;
2821 }
2822 
2823 /* "WaveTools.pyx":72
2824  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
2825  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
2826  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
2827  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
2828  * param: a : y(x) function [-]
2829  */
2830 
2831 /* Python wrapper */
2832 static PyObject *__pyx_pw_9WaveTools_11returnRectangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2833 static char __pyx_doc_9WaveTools_10returnRectangles[] = "returnRectangles(a, x)\n Returns \\delta y of y(x) using the rectangle method (\\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n) \n param: a : y(x) function [-]\n param: x : x- coordinate [-]\n ";
2834 static PyMethodDef __pyx_mdef_9WaveTools_11returnRectangles = {"returnRectangles", (PyCFunction)__pyx_pw_9WaveTools_11returnRectangles, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10returnRectangles};
2835 static PyObject *__pyx_pw_9WaveTools_11returnRectangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2836  PyObject *__pyx_v_a = 0;
2837  PyObject *__pyx_v_x = 0;
2838  int __pyx_lineno = 0;
2839  const char *__pyx_filename = NULL;
2840  int __pyx_clineno = 0;
2841  PyObject *__pyx_r = 0;
2842  __Pyx_RefNannyDeclarations
2843  __Pyx_RefNannySetupContext("returnRectangles (wrapper)", 0);
2844  {
2845  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_x,0};
2846  PyObject* values[2] = {0,0};
2847  if (unlikely(__pyx_kwds)) {
2848  Py_ssize_t kw_args;
2849  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2850  switch (pos_args) {
2851  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2852  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2853  case 0: break;
2854  default: goto __pyx_L5_argtuple_error;
2855  }
2856  kw_args = PyDict_Size(__pyx_kwds);
2857  switch (pos_args) {
2858  case 0:
2859  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
2860  else goto __pyx_L5_argtuple_error;
2861  case 1:
2862  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2863  else {
2864  __Pyx_RaiseArgtupleInvalid("returnRectangles", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2865  }
2866  }
2867  if (unlikely(kw_args > 0)) {
2868  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "returnRectangles") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2869  }
2870  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
2871  goto __pyx_L5_argtuple_error;
2872  } else {
2873  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2874  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2875  }
2876  __pyx_v_a = values[0];
2877  __pyx_v_x = values[1];
2878  }
2879  goto __pyx_L4_argument_unpacking_done;
2880  __pyx_L5_argtuple_error:;
2881  __Pyx_RaiseArgtupleInvalid("returnRectangles", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2882  __pyx_L3_error:;
2883  __Pyx_AddTraceback("WaveTools.returnRectangles", __pyx_clineno, __pyx_lineno, __pyx_filename);
2884  __Pyx_RefNannyFinishContext();
2885  return NULL;
2886  __pyx_L4_argument_unpacking_done:;
2887  __pyx_r = __pyx_pf_9WaveTools_10returnRectangles(__pyx_self, __pyx_v_a, __pyx_v_x);
2888 
2889  /* function exit code */
2890  __Pyx_RefNannyFinishContext();
2891  return __pyx_r;
2892 }
2893 
2894 static PyObject *__pyx_pf_9WaveTools_10returnRectangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x) {
2895  PyObject *__pyx_r = NULL;
2896  __Pyx_RefNannyDeclarations
2897  PyObject *__pyx_t_1 = NULL;
2898  PyObject *__pyx_t_2 = NULL;
2899  PyObject *__pyx_t_3 = NULL;
2900  PyObject *__pyx_t_4 = NULL;
2901  int __pyx_lineno = 0;
2902  const char *__pyx_filename = NULL;
2903  int __pyx_clineno = 0;
2904  __Pyx_RefNannySetupContext("returnRectangles", 0);
2905 
2906  /* "WaveTools.pyx":77
2907  * param: x : x- coordinate [-]
2908  * """
2909  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1]) # <<<<<<<<<<<<<<
2910  * def returnRectangles3D(a,x,y):
2911  * """ Returns \delta y of y(x,z) using the rectangle method
2912  */
2913  __Pyx_XDECREF(__pyx_r);
2914  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_a, 1, 0, NULL, NULL, &__pyx_slice__6, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2915  __Pyx_GOTREF(__pyx_t_1);
2916  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_a, 0, -1L, NULL, NULL, &__pyx_slice__7, 0, 1, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2917  __Pyx_GOTREF(__pyx_t_2);
2918  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2919  __Pyx_GOTREF(__pyx_t_3);
2920  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2921  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2922  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2923  __Pyx_GOTREF(__pyx_t_2);
2924  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2925  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_x, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2926  __Pyx_GOTREF(__pyx_t_3);
2927  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, -1L, NULL, NULL, &__pyx_slice__9, 0, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2928  __Pyx_GOTREF(__pyx_t_1);
2929  __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2930  __Pyx_GOTREF(__pyx_t_4);
2931  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2932  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2933  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2934  __Pyx_GOTREF(__pyx_t_1);
2935  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2936  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2937  __pyx_r = __pyx_t_1;
2938  __pyx_t_1 = 0;
2939  goto __pyx_L0;
2940 
2941  /* "WaveTools.pyx":72
2942  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
2943  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
2944  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
2945  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
2946  * param: a : y(x) function [-]
2947  */
2948 
2949  /* function exit code */
2950  __pyx_L1_error:;
2951  __Pyx_XDECREF(__pyx_t_1);
2952  __Pyx_XDECREF(__pyx_t_2);
2953  __Pyx_XDECREF(__pyx_t_3);
2954  __Pyx_XDECREF(__pyx_t_4);
2955  __Pyx_AddTraceback("WaveTools.returnRectangles", __pyx_clineno, __pyx_lineno, __pyx_filename);
2956  __pyx_r = NULL;
2957  __pyx_L0:;
2958  __Pyx_XGIVEREF(__pyx_r);
2959  __Pyx_RefNannyFinishContext();
2960  return __pyx_r;
2961 }
2962 
2963 /* "WaveTools.pyx":78
2964  * """
2965  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
2966  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
2967  * """ Returns \delta y of y(x,z) using the rectangle method
2968  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
2969  */
2970 
2971 /* Python wrapper */
2972 static PyObject *__pyx_pw_9WaveTools_13returnRectangles3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2973 static char __pyx_doc_9WaveTools_12returnRectangles3D[] = "returnRectangles3D(a, x, y)\n Returns \\delta y of y(x,z) using the rectangle method \n \\delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)\n param: a : a(x,y) function [-]\n param: x : x- coordinate [-]\n param: y : y- coordinate [-]\n ";
2974 static PyMethodDef __pyx_mdef_9WaveTools_13returnRectangles3D = {"returnRectangles3D", (PyCFunction)__pyx_pw_9WaveTools_13returnRectangles3D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12returnRectangles3D};
2975 static PyObject *__pyx_pw_9WaveTools_13returnRectangles3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2976  PyObject *__pyx_v_a = 0;
2977  PyObject *__pyx_v_x = 0;
2978  PyObject *__pyx_v_y = 0;
2979  int __pyx_lineno = 0;
2980  const char *__pyx_filename = NULL;
2981  int __pyx_clineno = 0;
2982  PyObject *__pyx_r = 0;
2983  __Pyx_RefNannyDeclarations
2984  __Pyx_RefNannySetupContext("returnRectangles3D (wrapper)", 0);
2985  {
2986  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_x,&__pyx_n_s_y,0};
2987  PyObject* values[3] = {0,0,0};
2988  if (unlikely(__pyx_kwds)) {
2989  Py_ssize_t kw_args;
2990  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2991  switch (pos_args) {
2992  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2993  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2994  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2995  case 0: break;
2996  default: goto __pyx_L5_argtuple_error;
2997  }
2998  kw_args = PyDict_Size(__pyx_kwds);
2999  switch (pos_args) {
3000  case 0:
3001  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
3002  else goto __pyx_L5_argtuple_error;
3003  case 1:
3004  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3005  else {
3006  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3007  }
3008  case 2:
3009  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
3010  else {
3011  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3012  }
3013  }
3014  if (unlikely(kw_args > 0)) {
3015  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "returnRectangles3D") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3016  }
3017  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
3018  goto __pyx_L5_argtuple_error;
3019  } else {
3020  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3021  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3022  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3023  }
3024  __pyx_v_a = values[0];
3025  __pyx_v_x = values[1];
3026  __pyx_v_y = values[2];
3027  }
3028  goto __pyx_L4_argument_unpacking_done;
3029  __pyx_L5_argtuple_error:;
3030  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3031  __pyx_L3_error:;
3032  __Pyx_AddTraceback("WaveTools.returnRectangles3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
3033  __Pyx_RefNannyFinishContext();
3034  return NULL;
3035  __pyx_L4_argument_unpacking_done:;
3036  __pyx_r = __pyx_pf_9WaveTools_12returnRectangles3D(__pyx_self, __pyx_v_a, __pyx_v_x, __pyx_v_y);
3037 
3038  /* function exit code */
3039  __Pyx_RefNannyFinishContext();
3040  return __pyx_r;
3041 }
3042 
3043 static PyObject *__pyx_pf_9WaveTools_12returnRectangles3D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
3044  PyObject *__pyx_v_ai = NULL;
3045  Py_ssize_t __pyx_v_ii;
3046  Py_ssize_t __pyx_v_jj;
3047  PyObject *__pyx_r = NULL;
3048  __Pyx_RefNannyDeclarations
3049  PyObject *__pyx_t_1 = NULL;
3050  PyObject *__pyx_t_2 = NULL;
3051  PyObject *__pyx_t_3 = NULL;
3052  Py_ssize_t __pyx_t_4;
3053  Py_ssize_t __pyx_t_5;
3054  PyObject *__pyx_t_6 = NULL;
3055  PyObject *__pyx_t_7 = NULL;
3056  int __pyx_lineno = 0;
3057  const char *__pyx_filename = NULL;
3058  int __pyx_clineno = 0;
3059  __Pyx_RefNannySetupContext("returnRectangles3D", 0);
3060 
3061  /* "WaveTools.pyx":85
3062  * param: y : y- coordinate [-]
3063  * """
3064  * ai = 0.5*(a[1:,:]+a[:-1,:]) # <<<<<<<<<<<<<<
3065  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
3066  * for ii in range(len(x)-1):
3067  */
3068  __pyx_t_1 = PyObject_GetItem(__pyx_v_a, __pyx_tuple__12); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3069  __Pyx_GOTREF(__pyx_t_1);
3070  __pyx_t_2 = PyObject_GetItem(__pyx_v_a, __pyx_tuple__15); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3071  __Pyx_GOTREF(__pyx_t_2);
3072  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3073  __Pyx_GOTREF(__pyx_t_3);
3074  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3075  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3076  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3077  __Pyx_GOTREF(__pyx_t_2);
3078  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3079  __pyx_v_ai = __pyx_t_2;
3080  __pyx_t_2 = 0;
3081 
3082  /* "WaveTools.pyx":86
3083  * """
3084  * ai = 0.5*(a[1:,:]+a[:-1,:])
3085  * ai = 0.5*(ai[:,1:]+ai[:,:-1]) # <<<<<<<<<<<<<<
3086  * for ii in range(len(x)-1):
3087  * ai[ii,:] *= (y[1:]-y[:-1])
3088  */
3089  __pyx_t_2 = PyObject_GetItem(__pyx_v_ai, __pyx_tuple__18); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3090  __Pyx_GOTREF(__pyx_t_2);
3091  __pyx_t_3 = PyObject_GetItem(__pyx_v_ai, __pyx_tuple__21); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3092  __Pyx_GOTREF(__pyx_t_3);
3093  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3094  __Pyx_GOTREF(__pyx_t_1);
3095  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3096  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3097  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3098  __Pyx_GOTREF(__pyx_t_3);
3099  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3100  __Pyx_DECREF_SET(__pyx_v_ai, __pyx_t_3);
3101  __pyx_t_3 = 0;
3102 
3103  /* "WaveTools.pyx":87
3104  * ai = 0.5*(a[1:,:]+a[:-1,:])
3105  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
3106  * for ii in range(len(x)-1): # <<<<<<<<<<<<<<
3107  * ai[ii,:] *= (y[1:]-y[:-1])
3108  * for jj in range(len(y) - 1):
3109  */
3110  __pyx_t_4 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3111  __pyx_t_5 = (__pyx_t_4 - 1);
3112  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_5; __pyx_t_4+=1) {
3113  __pyx_v_ii = __pyx_t_4;
3114 
3115  /* "WaveTools.pyx":88
3116  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
3117  * for ii in range(len(x)-1):
3118  * ai[ii,:] *= (y[1:]-y[:-1]) # <<<<<<<<<<<<<<
3119  * for jj in range(len(y) - 1):
3120  * ai[:,jj] *= (x[1:]-x[:-1])
3121  */
3122  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3123  __Pyx_GOTREF(__pyx_t_3);
3124  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3125  __Pyx_GOTREF(__pyx_t_1);
3126  __Pyx_GIVEREF(__pyx_t_3);
3127  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
3128  __Pyx_INCREF(__pyx_slice__22);
3129  __Pyx_GIVEREF(__pyx_slice__22);
3130  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_slice__22);
3131  __pyx_t_3 = 0;
3132  __pyx_t_3 = PyObject_GetItem(__pyx_v_ai, __pyx_t_1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3133  __Pyx_GOTREF(__pyx_t_3);
3134  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_y, 1, 0, NULL, NULL, &__pyx_slice__23, 1, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3135  __Pyx_GOTREF(__pyx_t_2);
3136  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_y, 0, -1L, NULL, NULL, &__pyx_slice__24, 0, 1, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3137  __Pyx_GOTREF(__pyx_t_6);
3138  __pyx_t_7 = PyNumber_Subtract(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3139  __Pyx_GOTREF(__pyx_t_7);
3140  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3141  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3142  __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3143  __Pyx_GOTREF(__pyx_t_6);
3144  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3145  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
3146  if (unlikely(PyObject_SetItem(__pyx_v_ai, __pyx_t_1, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3147  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3148  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3149  }
3150 
3151  /* "WaveTools.pyx":89
3152  * for ii in range(len(x)-1):
3153  * ai[ii,:] *= (y[1:]-y[:-1])
3154  * for jj in range(len(y) - 1): # <<<<<<<<<<<<<<
3155  * ai[:,jj] *= (x[1:]-x[:-1])
3156  * return ai
3157  */
3158  __pyx_t_5 = PyObject_Length(__pyx_v_y); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3159  __pyx_t_4 = (__pyx_t_5 - 1);
3160  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
3161  __pyx_v_jj = __pyx_t_5;
3162 
3163  /* "WaveTools.pyx":90
3164  * ai[ii,:] *= (y[1:]-y[:-1])
3165  * for jj in range(len(y) - 1):
3166  * ai[:,jj] *= (x[1:]-x[:-1]) # <<<<<<<<<<<<<<
3167  * return ai
3168  * def normIntegral(Sint,th):
3169  */
3170  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_jj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3171  __Pyx_GOTREF(__pyx_t_1);
3172  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3173  __Pyx_GOTREF(__pyx_t_6);
3174  __Pyx_INCREF(__pyx_slice__25);
3175  __Pyx_GIVEREF(__pyx_slice__25);
3176  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__25);
3177  __Pyx_GIVEREF(__pyx_t_1);
3178  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
3179  __pyx_t_1 = 0;
3180  __pyx_t_1 = PyObject_GetItem(__pyx_v_ai, __pyx_t_6); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3181  __Pyx_GOTREF(__pyx_t_1);
3182  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_x, 1, 0, NULL, NULL, &__pyx_slice__26, 1, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3183  __Pyx_GOTREF(__pyx_t_7);
3184  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, -1L, NULL, NULL, &__pyx_slice__27, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3185  __Pyx_GOTREF(__pyx_t_3);
3186  __pyx_t_2 = PyNumber_Subtract(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3187  __Pyx_GOTREF(__pyx_t_2);
3188  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
3189  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3190  __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3191  __Pyx_GOTREF(__pyx_t_3);
3192  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3193  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3194  if (unlikely(PyObject_SetItem(__pyx_v_ai, __pyx_t_6, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3195  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3196  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3197  }
3198 
3199  /* "WaveTools.pyx":91
3200  * for jj in range(len(y) - 1):
3201  * ai[:,jj] *= (x[1:]-x[:-1])
3202  * return ai # <<<<<<<<<<<<<<
3203  * def normIntegral(Sint,th):
3204  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
3205  */
3206  __Pyx_XDECREF(__pyx_r);
3207  __Pyx_INCREF(__pyx_v_ai);
3208  __pyx_r = __pyx_v_ai;
3209  goto __pyx_L0;
3210 
3211  /* "WaveTools.pyx":78
3212  * """
3213  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
3214  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
3215  * """ Returns \delta y of y(x,z) using the rectangle method
3216  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
3217  */
3218 
3219  /* function exit code */
3220  __pyx_L1_error:;
3221  __Pyx_XDECREF(__pyx_t_1);
3222  __Pyx_XDECREF(__pyx_t_2);
3223  __Pyx_XDECREF(__pyx_t_3);
3224  __Pyx_XDECREF(__pyx_t_6);
3225  __Pyx_XDECREF(__pyx_t_7);
3226  __Pyx_AddTraceback("WaveTools.returnRectangles3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
3227  __pyx_r = NULL;
3228  __pyx_L0:;
3229  __Pyx_XDECREF(__pyx_v_ai);
3230  __Pyx_XGIVEREF(__pyx_r);
3231  __Pyx_RefNannyFinishContext();
3232  return __pyx_r;
3233 }
3234 
3235 /* "WaveTools.pyx":92
3236  * ai[:,jj] *= (x[1:]-x[:-1])
3237  * return ai
3238  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
3239  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
3240  * param: Sint : Sint(th) function [-]
3241  */
3242 
3243 /* Python wrapper */
3244 static PyObject *__pyx_pw_9WaveTools_15normIntegral(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3245 static char __pyx_doc_9WaveTools_14normIntegral[] = "normIntegral(Sint, th)\nGiven an Sint(th) function, it returns Sint_n, such as \\int (Sint_n dth = 1)\n param: Sint : Sint(th) function [-]\n param: th : th- coordinate [-]\n ";
3246 static PyMethodDef __pyx_mdef_9WaveTools_15normIntegral = {"normIntegral", (PyCFunction)__pyx_pw_9WaveTools_15normIntegral, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_14normIntegral};
3247 static PyObject *__pyx_pw_9WaveTools_15normIntegral(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3248  PyObject *__pyx_v_Sint = 0;
3249  PyObject *__pyx_v_th = 0;
3250  int __pyx_lineno = 0;
3251  const char *__pyx_filename = NULL;
3252  int __pyx_clineno = 0;
3253  PyObject *__pyx_r = 0;
3254  __Pyx_RefNannyDeclarations
3255  __Pyx_RefNannySetupContext("normIntegral (wrapper)", 0);
3256  {
3257  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Sint,&__pyx_n_s_th,0};
3258  PyObject* values[2] = {0,0};
3259  if (unlikely(__pyx_kwds)) {
3260  Py_ssize_t kw_args;
3261  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3262  switch (pos_args) {
3263  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3264  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3265  case 0: break;
3266  default: goto __pyx_L5_argtuple_error;
3267  }
3268  kw_args = PyDict_Size(__pyx_kwds);
3269  switch (pos_args) {
3270  case 0:
3271  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Sint)) != 0)) kw_args--;
3272  else goto __pyx_L5_argtuple_error;
3273  case 1:
3274  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_th)) != 0)) kw_args--;
3275  else {
3276  __Pyx_RaiseArgtupleInvalid("normIntegral", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3277  }
3278  }
3279  if (unlikely(kw_args > 0)) {
3280  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "normIntegral") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3281  }
3282  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
3283  goto __pyx_L5_argtuple_error;
3284  } else {
3285  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3286  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3287  }
3288  __pyx_v_Sint = values[0];
3289  __pyx_v_th = values[1];
3290  }
3291  goto __pyx_L4_argument_unpacking_done;
3292  __pyx_L5_argtuple_error:;
3293  __Pyx_RaiseArgtupleInvalid("normIntegral", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3294  __pyx_L3_error:;
3295  __Pyx_AddTraceback("WaveTools.normIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
3296  __Pyx_RefNannyFinishContext();
3297  return NULL;
3298  __pyx_L4_argument_unpacking_done:;
3299  __pyx_r = __pyx_pf_9WaveTools_14normIntegral(__pyx_self, __pyx_v_Sint, __pyx_v_th);
3300 
3301  /* function exit code */
3302  __Pyx_RefNannyFinishContext();
3303  return __pyx_r;
3304 }
3305 
3306 static PyObject *__pyx_pf_9WaveTools_14normIntegral(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Sint, PyObject *__pyx_v_th) {
3307  PyObject *__pyx_v_G0 = NULL;
3308  PyObject *__pyx_r = NULL;
3309  __Pyx_RefNannyDeclarations
3310  PyObject *__pyx_t_1 = NULL;
3311  PyObject *__pyx_t_2 = NULL;
3312  PyObject *__pyx_t_3 = NULL;
3313  Py_ssize_t __pyx_t_4;
3314  PyObject *__pyx_t_5 = NULL;
3315  int __pyx_lineno = 0;
3316  const char *__pyx_filename = NULL;
3317  int __pyx_clineno = 0;
3318  __Pyx_RefNannySetupContext("normIntegral", 0);
3319 
3320  /* "WaveTools.pyx":97
3321  * param: th : th- coordinate [-]
3322  * """
3323  * G0 = 1./sum(returnRectangles(Sint,th)) # <<<<<<<<<<<<<<
3324  * return G0*Sint
3325  *
3326  */
3327  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3328  __Pyx_GOTREF(__pyx_t_2);
3329  __pyx_t_3 = NULL;
3330  __pyx_t_4 = 0;
3331  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
3332  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
3333  if (likely(__pyx_t_3)) {
3334  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
3335  __Pyx_INCREF(__pyx_t_3);
3336  __Pyx_INCREF(function);
3337  __Pyx_DECREF_SET(__pyx_t_2, function);
3338  __pyx_t_4 = 1;
3339  }
3340  }
3341  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3342  __Pyx_GOTREF(__pyx_t_5);
3343  if (__pyx_t_3) {
3344  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
3345  }
3346  __Pyx_INCREF(__pyx_v_Sint);
3347  __Pyx_GIVEREF(__pyx_v_Sint);
3348  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_Sint);
3349  __Pyx_INCREF(__pyx_v_th);
3350  __Pyx_GIVEREF(__pyx_v_th);
3351  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_th);
3352  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3353  __Pyx_GOTREF(__pyx_t_1);
3354  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3355  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3356  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3357  __Pyx_GOTREF(__pyx_t_2);
3358  __Pyx_GIVEREF(__pyx_t_1);
3359  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
3360  __pyx_t_1 = 0;
3361  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3362  __Pyx_GOTREF(__pyx_t_1);
3363  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3364  __pyx_t_2 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_t_1, 1., 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3365  __Pyx_GOTREF(__pyx_t_2);
3366  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3367  __pyx_v_G0 = __pyx_t_2;
3368  __pyx_t_2 = 0;
3369 
3370  /* "WaveTools.pyx":98
3371  * """
3372  * G0 = 1./sum(returnRectangles(Sint,th))
3373  * return G0*Sint # <<<<<<<<<<<<<<
3374  *
3375  *
3376  */
3377  __Pyx_XDECREF(__pyx_r);
3378  __pyx_t_2 = PyNumber_Multiply(__pyx_v_G0, __pyx_v_Sint); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3379  __Pyx_GOTREF(__pyx_t_2);
3380  __pyx_r = __pyx_t_2;
3381  __pyx_t_2 = 0;
3382  goto __pyx_L0;
3383 
3384  /* "WaveTools.pyx":92
3385  * ai[:,jj] *= (x[1:]-x[:-1])
3386  * return ai
3387  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
3388  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
3389  * param: Sint : Sint(th) function [-]
3390  */
3391 
3392  /* function exit code */
3393  __pyx_L1_error:;
3394  __Pyx_XDECREF(__pyx_t_1);
3395  __Pyx_XDECREF(__pyx_t_2);
3396  __Pyx_XDECREF(__pyx_t_3);
3397  __Pyx_XDECREF(__pyx_t_5);
3398  __Pyx_AddTraceback("WaveTools.normIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
3399  __pyx_r = NULL;
3400  __pyx_L0:;
3401  __Pyx_XDECREF(__pyx_v_G0);
3402  __Pyx_XGIVEREF(__pyx_r);
3403  __Pyx_RefNannyFinishContext();
3404  return __pyx_r;
3405 }
3406 
3407 /* "WaveTools.pyx":102
3408  *
3409  *
3410  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
3411  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
3412  * :param kDir: wave number vector [1/L] with three components
3413  */
3414 
3415 /* Python wrapper */
3416 static PyObject *__pyx_pw_9WaveTools_17eta_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3417 static char __pyx_doc_9WaveTools_16eta_mode[] = "eta_mode(x, t, kDir, omega, phi, amplitude)\nReturns a single frequency mode for free-surface elevation at point x,y,z,t\n :param kDir: wave number vector [1/L] with three components\n :param omega: angular frequency [1/T]\n :param phi: phase [0,2*pi]\n :param amplitude: wave amplitude [L/T^2]\n ";
3418 static PyMethodDef __pyx_mdef_9WaveTools_17eta_mode = {"eta_mode", (PyCFunction)__pyx_pw_9WaveTools_17eta_mode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16eta_mode};
3419 static PyObject *__pyx_pw_9WaveTools_17eta_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3420  PyObject *__pyx_v_x = 0;
3421  PyObject *__pyx_v_t = 0;
3422  PyObject *__pyx_v_kDir = 0;
3423  PyObject *__pyx_v_omega = 0;
3424  PyObject *__pyx_v_phi = 0;
3425  PyObject *__pyx_v_amplitude = 0;
3426  int __pyx_lineno = 0;
3427  const char *__pyx_filename = NULL;
3428  int __pyx_clineno = 0;
3429  PyObject *__pyx_r = 0;
3430  __Pyx_RefNannyDeclarations
3431  __Pyx_RefNannySetupContext("eta_mode (wrapper)", 0);
3432  {
3433  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,&__pyx_n_s_kDir,&__pyx_n_s_omega,&__pyx_n_s_phi,&__pyx_n_s_amplitude,0};
3434  PyObject* values[6] = {0,0,0,0,0,0};
3435  if (unlikely(__pyx_kwds)) {
3436  Py_ssize_t kw_args;
3437  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3438  switch (pos_args) {
3439  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3440  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3441  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3442  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3443  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3444  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3445  case 0: break;
3446  default: goto __pyx_L5_argtuple_error;
3447  }
3448  kw_args = PyDict_Size(__pyx_kwds);
3449  switch (pos_args) {
3450  case 0:
3451  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3452  else goto __pyx_L5_argtuple_error;
3453  case 1:
3454  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3455  else {
3456  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3457  }
3458  case 2:
3459  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kDir)) != 0)) kw_args--;
3460  else {
3461  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3462  }
3463  case 3:
3464  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
3465  else {
3466  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3467  }
3468  case 4:
3469  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
3470  else {
3471  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3472  }
3473  case 5:
3474  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_amplitude)) != 0)) kw_args--;
3475  else {
3476  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3477  }
3478  }
3479  if (unlikely(kw_args > 0)) {
3480  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_mode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3481  }
3482  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
3483  goto __pyx_L5_argtuple_error;
3484  } else {
3485  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3486  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3487  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3488  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3489  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3490  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3491  }
3492  __pyx_v_x = values[0];
3493  __pyx_v_t = values[1];
3494  __pyx_v_kDir = values[2];
3495  __pyx_v_omega = values[3];
3496  __pyx_v_phi = values[4];
3497  __pyx_v_amplitude = values[5];
3498  }
3499  goto __pyx_L4_argument_unpacking_done;
3500  __pyx_L5_argtuple_error:;
3501  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3502  __pyx_L3_error:;
3503  __Pyx_AddTraceback("WaveTools.eta_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
3504  __Pyx_RefNannyFinishContext();
3505  return NULL;
3506  __pyx_L4_argument_unpacking_done:;
3507  __pyx_r = __pyx_pf_9WaveTools_16eta_mode(__pyx_self, __pyx_v_x, __pyx_v_t, __pyx_v_kDir, __pyx_v_omega, __pyx_v_phi, __pyx_v_amplitude);
3508 
3509  /* function exit code */
3510  __Pyx_RefNannyFinishContext();
3511  return __pyx_r;
3512 }
3513 
3514 static PyObject *__pyx_pf_9WaveTools_16eta_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude) {
3515  PyObject *__pyx_v_phase = NULL;
3516  PyObject *__pyx_r = NULL;
3517  __Pyx_RefNannyDeclarations
3518  PyObject *__pyx_t_1 = NULL;
3519  PyObject *__pyx_t_2 = NULL;
3520  PyObject *__pyx_t_3 = NULL;
3521  PyObject *__pyx_t_4 = NULL;
3522  int __pyx_lineno = 0;
3523  const char *__pyx_filename = NULL;
3524  int __pyx_clineno = 0;
3525  __Pyx_RefNannySetupContext("eta_mode", 0);
3526 
3527  /* "WaveTools.pyx":109
3528  * :param amplitude: wave amplitude [L/T^2]
3529  * """
3530  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi # <<<<<<<<<<<<<<
3531  * return amplitude*cos(phase)
3532  *
3533  */
3534  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3535  __Pyx_GOTREF(__pyx_t_1);
3536  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_kDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3537  __Pyx_GOTREF(__pyx_t_2);
3538  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3539  __Pyx_GOTREF(__pyx_t_3);
3540  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3541  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3542  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3543  __Pyx_GOTREF(__pyx_t_2);
3544  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_kDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3545  __Pyx_GOTREF(__pyx_t_1);
3546  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3547  __Pyx_GOTREF(__pyx_t_4);
3548  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3549  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3550  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3551  __Pyx_GOTREF(__pyx_t_1);
3552  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3553  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3554  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3555  __Pyx_GOTREF(__pyx_t_4);
3556  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_kDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3557  __Pyx_GOTREF(__pyx_t_3);
3558  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3559  __Pyx_GOTREF(__pyx_t_2);
3560  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3561  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3562  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3563  __Pyx_GOTREF(__pyx_t_3);
3564  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3565  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3566  __pyx_t_2 = PyNumber_Multiply(__pyx_v_omega, __pyx_v_t); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3567  __Pyx_GOTREF(__pyx_t_2);
3568  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3569  __Pyx_GOTREF(__pyx_t_1);
3570  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3571  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3572  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_phi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3573  __Pyx_GOTREF(__pyx_t_2);
3574  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3575  __pyx_v_phase = __pyx_t_2;
3576  __pyx_t_2 = 0;
3577 
3578  /* "WaveTools.pyx":110
3579  * """
3580  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
3581  * return amplitude*cos(phase) # <<<<<<<<<<<<<<
3582  *
3583  *
3584  */
3585  __Pyx_XDECREF(__pyx_r);
3586  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3587  __Pyx_GOTREF(__pyx_t_1);
3588  __pyx_t_3 = NULL;
3589  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
3590  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
3591  if (likely(__pyx_t_3)) {
3592  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
3593  __Pyx_INCREF(__pyx_t_3);
3594  __Pyx_INCREF(function);
3595  __Pyx_DECREF_SET(__pyx_t_1, function);
3596  }
3597  }
3598  if (!__pyx_t_3) {
3599  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_phase); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3600  __Pyx_GOTREF(__pyx_t_2);
3601  } else {
3602  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3603  __Pyx_GOTREF(__pyx_t_4);
3604  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
3605  __Pyx_INCREF(__pyx_v_phase);
3606  __Pyx_GIVEREF(__pyx_v_phase);
3607  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_phase);
3608  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3609  __Pyx_GOTREF(__pyx_t_2);
3610  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3611  }
3612  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3613  __pyx_t_1 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3614  __Pyx_GOTREF(__pyx_t_1);
3615  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3616  __pyx_r = __pyx_t_1;
3617  __pyx_t_1 = 0;
3618  goto __pyx_L0;
3619 
3620  /* "WaveTools.pyx":102
3621  *
3622  *
3623  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
3624  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
3625  * :param kDir: wave number vector [1/L] with three components
3626  */
3627 
3628  /* function exit code */
3629  __pyx_L1_error:;
3630  __Pyx_XDECREF(__pyx_t_1);
3631  __Pyx_XDECREF(__pyx_t_2);
3632  __Pyx_XDECREF(__pyx_t_3);
3633  __Pyx_XDECREF(__pyx_t_4);
3634  __Pyx_AddTraceback("WaveTools.eta_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
3635  __pyx_r = NULL;
3636  __pyx_L0:;
3637  __Pyx_XDECREF(__pyx_v_phase);
3638  __Pyx_XGIVEREF(__pyx_r);
3639  __Pyx_RefNannyFinishContext();
3640  return __pyx_r;
3641 }
3642 
3643 /* "WaveTools.pyx":113
3644  *
3645  *
3646  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
3647  * """Returns a single frequency mode for velocity at point x,y,z,t
3648  * :param kDir: wave number vector [1/L] with three components
3649  */
3650 
3651 /* Python wrapper */
3652 static PyObject *__pyx_pw_9WaveTools_19vel_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3653 static char __pyx_doc_9WaveTools_18vel_mode[] = "vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir)\nReturns a single frequency mode for velocity at point x,y,z,t\n :param kDir: wave number vector [1/L] with three components\n :param omega: angular frequency [1/T]\n :param phi: phase [0,2*pi]\n :param amplitude: wave amplitude [L/T^2]\n :param mwl: mean water level [L]\n :param depth: water depth [L]\n :param g: gravity vector\n :param vDir (vertical direction - opposite to the gravity vector)\n :param comp: component \"x\", \"y\" or \"z\"\n ";
3654 static PyMethodDef __pyx_mdef_9WaveTools_19vel_mode = {"vel_mode", (PyCFunction)__pyx_pw_9WaveTools_19vel_mode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18vel_mode};
3655 static PyObject *__pyx_pw_9WaveTools_19vel_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3656  PyObject *__pyx_v_x = 0;
3657  PyObject *__pyx_v_t = 0;
3658  PyObject *__pyx_v_kDir = 0;
3659  PyObject *__pyx_v_kAbs = 0;
3660  PyObject *__pyx_v_omega = 0;
3661  PyObject *__pyx_v_phi = 0;
3662  PyObject *__pyx_v_amplitude = 0;
3663  PyObject *__pyx_v_mwl = 0;
3664  PyObject *__pyx_v_depth = 0;
3665  CYTHON_UNUSED PyObject *__pyx_v_g = 0;
3666  PyObject *__pyx_v_vDir = 0;
3667  int __pyx_lineno = 0;
3668  const char *__pyx_filename = NULL;
3669  int __pyx_clineno = 0;
3670  PyObject *__pyx_r = 0;
3671  __Pyx_RefNannyDeclarations
3672  __Pyx_RefNannySetupContext("vel_mode (wrapper)", 0);
3673  {
3674  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,&__pyx_n_s_kDir,&__pyx_n_s_kAbs,&__pyx_n_s_omega,&__pyx_n_s_phi,&__pyx_n_s_amplitude,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_g,&__pyx_n_s_vDir,0};
3675  PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
3676  if (unlikely(__pyx_kwds)) {
3677  Py_ssize_t kw_args;
3678  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3679  switch (pos_args) {
3680  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
3681  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
3682  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
3683  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
3684  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
3685  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3686  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3687  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3688  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3689  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3690  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3691  case 0: break;
3692  default: goto __pyx_L5_argtuple_error;
3693  }
3694  kw_args = PyDict_Size(__pyx_kwds);
3695  switch (pos_args) {
3696  case 0:
3697  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3698  else goto __pyx_L5_argtuple_error;
3699  case 1:
3700  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3701  else {
3702  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3703  }
3704  case 2:
3705  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kDir)) != 0)) kw_args--;
3706  else {
3707  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3708  }
3709  case 3:
3710  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kAbs)) != 0)) kw_args--;
3711  else {
3712  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3713  }
3714  case 4:
3715  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
3716  else {
3717  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3718  }
3719  case 5:
3720  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
3721  else {
3722  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3723  }
3724  case 6:
3725  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_amplitude)) != 0)) kw_args--;
3726  else {
3727  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3728  }
3729  case 7:
3730  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
3731  else {
3732  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3733  }
3734  case 8:
3735  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
3736  else {
3737  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3738  }
3739  case 9:
3740  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
3741  else {
3742  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3743  }
3744  case 10:
3745  if (likely((values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vDir)) != 0)) kw_args--;
3746  else {
3747  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3748  }
3749  }
3750  if (unlikely(kw_args > 0)) {
3751  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vel_mode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3752  }
3753  } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
3754  goto __pyx_L5_argtuple_error;
3755  } else {
3756  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3757  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3758  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3759  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3760  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3761  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3762  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
3763  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
3764  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
3765  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
3766  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
3767  }
3768  __pyx_v_x = values[0];
3769  __pyx_v_t = values[1];
3770  __pyx_v_kDir = values[2];
3771  __pyx_v_kAbs = values[3];
3772  __pyx_v_omega = values[4];
3773  __pyx_v_phi = values[5];
3774  __pyx_v_amplitude = values[6];
3775  __pyx_v_mwl = values[7];
3776  __pyx_v_depth = values[8];
3777  __pyx_v_g = values[9];
3778  __pyx_v_vDir = values[10];
3779  }
3780  goto __pyx_L4_argument_unpacking_done;
3781  __pyx_L5_argtuple_error:;
3782  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3783  __pyx_L3_error:;
3784  __Pyx_AddTraceback("WaveTools.vel_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
3785  __Pyx_RefNannyFinishContext();
3786  return NULL;
3787  __pyx_L4_argument_unpacking_done:;
3788  __pyx_r = __pyx_pf_9WaveTools_18vel_mode(__pyx_self, __pyx_v_x, __pyx_v_t, __pyx_v_kDir, __pyx_v_kAbs, __pyx_v_omega, __pyx_v_phi, __pyx_v_amplitude, __pyx_v_mwl, __pyx_v_depth, __pyx_v_g, __pyx_v_vDir);
3789 
3790  /* function exit code */
3791  __Pyx_RefNannyFinishContext();
3792  return __pyx_r;
3793 }
3794 
3795 static PyObject *__pyx_pf_9WaveTools_18vel_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_kAbs, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, CYTHON_UNUSED PyObject *__pyx_v_g, PyObject *__pyx_v_vDir) {
3796  PyObject *__pyx_v_phase = NULL;
3797  PyObject *__pyx_v_Z = NULL;
3798  PyObject *__pyx_v_UH = NULL;
3799  PyObject *__pyx_v_UV = NULL;
3800  CYTHON_UNUSED double __pyx_v_ii;
3801  PyObject *__pyx_v_waveDir = NULL;
3802  PyObject *__pyx_v_V = NULL;
3803  PyObject *__pyx_r = NULL;
3804  __Pyx_RefNannyDeclarations
3805  PyObject *__pyx_t_1 = NULL;
3806  PyObject *__pyx_t_2 = NULL;
3807  PyObject *__pyx_t_3 = NULL;
3808  PyObject *__pyx_t_4 = NULL;
3809  PyObject *__pyx_t_5 = NULL;
3810  PyObject *__pyx_t_6 = NULL;
3811  PyObject *__pyx_t_7 = NULL;
3812  int __pyx_lineno = 0;
3813  const char *__pyx_filename = NULL;
3814  int __pyx_clineno = 0;
3815  __Pyx_RefNannySetupContext("vel_mode", 0);
3816 
3817  /* "WaveTools.pyx":126
3818  * """
3819  *
3820  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi # <<<<<<<<<<<<<<
3821  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
3822  * UH = 0.
3823  */
3824  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3825  __Pyx_GOTREF(__pyx_t_1);
3826  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_kDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3827  __Pyx_GOTREF(__pyx_t_2);
3828  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3829  __Pyx_GOTREF(__pyx_t_3);
3830  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3831  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3832  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3833  __Pyx_GOTREF(__pyx_t_2);
3834  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_kDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3835  __Pyx_GOTREF(__pyx_t_1);
3836  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3837  __Pyx_GOTREF(__pyx_t_4);
3838  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3839  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3840  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3841  __Pyx_GOTREF(__pyx_t_1);
3842  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3843  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3844  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3845  __Pyx_GOTREF(__pyx_t_4);
3846  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_kDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3847  __Pyx_GOTREF(__pyx_t_3);
3848  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3849  __Pyx_GOTREF(__pyx_t_2);
3850  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3851  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3852  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3853  __Pyx_GOTREF(__pyx_t_3);
3854  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3855  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3856  __pyx_t_2 = PyNumber_Multiply(__pyx_v_omega, __pyx_v_t); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3857  __Pyx_GOTREF(__pyx_t_2);
3858  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3859  __Pyx_GOTREF(__pyx_t_1);
3860  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3861  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3862  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_phi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3863  __Pyx_GOTREF(__pyx_t_2);
3864  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3865  __pyx_v_phase = __pyx_t_2;
3866  __pyx_t_2 = 0;
3867 
3868  /* "WaveTools.pyx":127
3869  *
3870  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
3871  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl # <<<<<<<<<<<<<<
3872  * UH = 0.
3873  * UV=0.
3874  */
3875  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3876  __Pyx_GOTREF(__pyx_t_2);
3877  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3878  __Pyx_GOTREF(__pyx_t_1);
3879  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3880  __Pyx_GOTREF(__pyx_t_3);
3881  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3882  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3883  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3884  __Pyx_GOTREF(__pyx_t_1);
3885  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3886  __Pyx_GOTREF(__pyx_t_2);
3887  __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3888  __Pyx_GOTREF(__pyx_t_4);
3889  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3890  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3891  __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3892  __Pyx_GOTREF(__pyx_t_2);
3893  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3894  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3895  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_vDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3896  __Pyx_GOTREF(__pyx_t_4);
3897  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3898  __Pyx_GOTREF(__pyx_t_3);
3899  __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3900  __Pyx_GOTREF(__pyx_t_1);
3901  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3902  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3903  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3904  __Pyx_GOTREF(__pyx_t_3);
3905  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3906  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3907  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_v_mwl); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3908  __Pyx_GOTREF(__pyx_t_1);
3909  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3910  __pyx_v_Z = __pyx_t_1;
3911  __pyx_t_1 = 0;
3912 
3913  /* "WaveTools.pyx":128
3914  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
3915  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
3916  * UH = 0. # <<<<<<<<<<<<<<
3917  * UV=0.
3918  * ii=0.
3919  */
3920  __Pyx_INCREF(__pyx_float_0_);
3921  __pyx_v_UH = __pyx_float_0_;
3922 
3923  /* "WaveTools.pyx":129
3924  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
3925  * UH = 0.
3926  * UV=0. # <<<<<<<<<<<<<<
3927  * ii=0.
3928  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
3929  */
3930  __Pyx_INCREF(__pyx_float_0_);
3931  __pyx_v_UV = __pyx_float_0_;
3932 
3933  /* "WaveTools.pyx":130
3934  * UH = 0.
3935  * UV=0.
3936  * ii=0. # <<<<<<<<<<<<<<
3937  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
3938  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
3939  */
3940  __pyx_v_ii = 0.;
3941 
3942  /* "WaveTools.pyx":131
3943  * UV=0.
3944  * ii=0.
3945  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth) # <<<<<<<<<<<<<<
3946  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
3947  * waveDir = kDir/kAbs
3948  */
3949  __pyx_t_1 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_v_omega); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3950  __Pyx_GOTREF(__pyx_t_1);
3951  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cosh); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3952  __Pyx_GOTREF(__pyx_t_2);
3953  __pyx_t_4 = PyNumber_Add(__pyx_v_Z, __pyx_v_depth); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3954  __Pyx_GOTREF(__pyx_t_4);
3955  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3956  __Pyx_GOTREF(__pyx_t_5);
3957  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3958  __pyx_t_4 = NULL;
3959  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
3960  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
3961  if (likely(__pyx_t_4)) {
3962  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
3963  __Pyx_INCREF(__pyx_t_4);
3964  __Pyx_INCREF(function);
3965  __Pyx_DECREF_SET(__pyx_t_2, function);
3966  }
3967  }
3968  if (!__pyx_t_4) {
3969  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3970  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3971  __Pyx_GOTREF(__pyx_t_3);
3972  } else {
3973  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3974  __Pyx_GOTREF(__pyx_t_6);
3975  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
3976  __Pyx_GIVEREF(__pyx_t_5);
3977  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
3978  __pyx_t_5 = 0;
3979  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3980  __Pyx_GOTREF(__pyx_t_3);
3981  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3982  }
3983  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3984  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3985  __Pyx_GOTREF(__pyx_t_2);
3986  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3987  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3988  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3989  __Pyx_GOTREF(__pyx_t_1);
3990  __pyx_t_6 = NULL;
3991  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
3992  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
3993  if (likely(__pyx_t_6)) {
3994  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
3995  __Pyx_INCREF(__pyx_t_6);
3996  __Pyx_INCREF(function);
3997  __Pyx_DECREF_SET(__pyx_t_1, function);
3998  }
3999  }
4000  if (!__pyx_t_6) {
4001  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_phase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4002  __Pyx_GOTREF(__pyx_t_3);
4003  } else {
4004  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4005  __Pyx_GOTREF(__pyx_t_5);
4006  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
4007  __Pyx_INCREF(__pyx_v_phase);
4008  __Pyx_GIVEREF(__pyx_v_phase);
4009  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_phase);
4010  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4011  __Pyx_GOTREF(__pyx_t_3);
4012  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4013  }
4014  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4015  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4016  __Pyx_GOTREF(__pyx_t_1);
4017  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4018  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4019  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sinh); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4020  __Pyx_GOTREF(__pyx_t_2);
4021  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_v_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4022  __Pyx_GOTREF(__pyx_t_5);
4023  __pyx_t_6 = NULL;
4024  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4025  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
4026  if (likely(__pyx_t_6)) {
4027  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4028  __Pyx_INCREF(__pyx_t_6);
4029  __Pyx_INCREF(function);
4030  __Pyx_DECREF_SET(__pyx_t_2, function);
4031  }
4032  }
4033  if (!__pyx_t_6) {
4034  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4035  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4036  __Pyx_GOTREF(__pyx_t_3);
4037  } else {
4038  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4039  __Pyx_GOTREF(__pyx_t_4);
4040  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
4041  __Pyx_GIVEREF(__pyx_t_5);
4042  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
4043  __pyx_t_5 = 0;
4044  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4045  __Pyx_GOTREF(__pyx_t_3);
4046  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4047  }
4048  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4049  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4050  __Pyx_GOTREF(__pyx_t_2);
4051  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4052  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4053  __Pyx_DECREF_SET(__pyx_v_UH, __pyx_t_2);
4054  __pyx_t_2 = 0;
4055 
4056  /* "WaveTools.pyx":132
4057  * ii=0.
4058  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
4059  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth) # <<<<<<<<<<<<<<
4060  * waveDir = kDir/kAbs
4061  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4062  */
4063  __pyx_t_2 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_v_omega); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4064  __Pyx_GOTREF(__pyx_t_2);
4065  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sinh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4066  __Pyx_GOTREF(__pyx_t_1);
4067  __pyx_t_4 = PyNumber_Add(__pyx_v_Z, __pyx_v_depth); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4068  __Pyx_GOTREF(__pyx_t_4);
4069  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4070  __Pyx_GOTREF(__pyx_t_5);
4071  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4072  __pyx_t_4 = NULL;
4073  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
4074  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
4075  if (likely(__pyx_t_4)) {
4076  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4077  __Pyx_INCREF(__pyx_t_4);
4078  __Pyx_INCREF(function);
4079  __Pyx_DECREF_SET(__pyx_t_1, function);
4080  }
4081  }
4082  if (!__pyx_t_4) {
4083  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4084  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4085  __Pyx_GOTREF(__pyx_t_3);
4086  } else {
4087  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4088  __Pyx_GOTREF(__pyx_t_6);
4089  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
4090  __Pyx_GIVEREF(__pyx_t_5);
4091  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
4092  __pyx_t_5 = 0;
4093  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4094  __Pyx_GOTREF(__pyx_t_3);
4095  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4096  }
4097  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4098  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4099  __Pyx_GOTREF(__pyx_t_1);
4100  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4101  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4102  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sin); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4103  __Pyx_GOTREF(__pyx_t_2);
4104  __pyx_t_6 = NULL;
4105  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4106  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
4107  if (likely(__pyx_t_6)) {
4108  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4109  __Pyx_INCREF(__pyx_t_6);
4110  __Pyx_INCREF(function);
4111  __Pyx_DECREF_SET(__pyx_t_2, function);
4112  }
4113  }
4114  if (!__pyx_t_6) {
4115  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_phase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4116  __Pyx_GOTREF(__pyx_t_3);
4117  } else {
4118  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4119  __Pyx_GOTREF(__pyx_t_5);
4120  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
4121  __Pyx_INCREF(__pyx_v_phase);
4122  __Pyx_GIVEREF(__pyx_v_phase);
4123  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_phase);
4124  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4125  __Pyx_GOTREF(__pyx_t_3);
4126  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4127  }
4128  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4129  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4130  __Pyx_GOTREF(__pyx_t_2);
4131  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4132  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4133  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sinh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4134  __Pyx_GOTREF(__pyx_t_1);
4135  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_v_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4136  __Pyx_GOTREF(__pyx_t_5);
4137  __pyx_t_6 = NULL;
4138  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
4139  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
4140  if (likely(__pyx_t_6)) {
4141  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4142  __Pyx_INCREF(__pyx_t_6);
4143  __Pyx_INCREF(function);
4144  __Pyx_DECREF_SET(__pyx_t_1, function);
4145  }
4146  }
4147  if (!__pyx_t_6) {
4148  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4149  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4150  __Pyx_GOTREF(__pyx_t_3);
4151  } else {
4152  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4153  __Pyx_GOTREF(__pyx_t_4);
4154  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
4155  __Pyx_GIVEREF(__pyx_t_5);
4156  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
4157  __pyx_t_5 = 0;
4158  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4159  __Pyx_GOTREF(__pyx_t_3);
4160  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4161  }
4162  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4163  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4164  __Pyx_GOTREF(__pyx_t_1);
4165  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4166  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4167  __Pyx_DECREF_SET(__pyx_v_UV, __pyx_t_1);
4168  __pyx_t_1 = 0;
4169 
4170  /* "WaveTools.pyx":133
4171  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
4172  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
4173  * waveDir = kDir/kAbs # <<<<<<<<<<<<<<
4174  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4175  * V = np.array([UH*waveDir[0]+UV*vDir[0],
4176  */
4177  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_kDir, __pyx_v_kAbs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4178  __Pyx_GOTREF(__pyx_t_1);
4179  __pyx_v_waveDir = __pyx_t_1;
4180  __pyx_t_1 = 0;
4181 
4182  /* "WaveTools.pyx":135
4183  * waveDir = kDir/kAbs
4184  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4185  * V = np.array([UH*waveDir[0]+UV*vDir[0], # <<<<<<<<<<<<<<
4186  * UH*waveDir[1]+UV*vDir[1],
4187  * UH*waveDir[2]+UV*vDir[2]])
4188  */
4189  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4190  __Pyx_GOTREF(__pyx_t_3);
4191  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4192  __Pyx_GOTREF(__pyx_t_2);
4193  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4194  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_waveDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4195  __Pyx_GOTREF(__pyx_t_3);
4196  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4197  __Pyx_GOTREF(__pyx_t_4);
4198  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4199  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4200  __Pyx_GOTREF(__pyx_t_3);
4201  __pyx_t_5 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4202  __Pyx_GOTREF(__pyx_t_5);
4203  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4204  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4205  __Pyx_GOTREF(__pyx_t_3);
4206  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4207  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4208 
4209  /* "WaveTools.pyx":136
4210  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4211  * V = np.array([UH*waveDir[0]+UV*vDir[0],
4212  * UH*waveDir[1]+UV*vDir[1], # <<<<<<<<<<<<<<
4213  * UH*waveDir[2]+UV*vDir[2]])
4214  * return V
4215  */
4216  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_waveDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4217  __Pyx_GOTREF(__pyx_t_5);
4218  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4219  __Pyx_GOTREF(__pyx_t_4);
4220  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4221  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_vDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4222  __Pyx_GOTREF(__pyx_t_5);
4223  __pyx_t_6 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4224  __Pyx_GOTREF(__pyx_t_6);
4225  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4226  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4227  __Pyx_GOTREF(__pyx_t_5);
4228  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4229  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4230 
4231  /* "WaveTools.pyx":137
4232  * V = np.array([UH*waveDir[0]+UV*vDir[0],
4233  * UH*waveDir[1]+UV*vDir[1],
4234  * UH*waveDir[2]+UV*vDir[2]]) # <<<<<<<<<<<<<<
4235  * return V
4236  *
4237  */
4238  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_waveDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4239  __Pyx_GOTREF(__pyx_t_6);
4240  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4241  __Pyx_GOTREF(__pyx_t_4);
4242  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4243  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_vDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4244  __Pyx_GOTREF(__pyx_t_6);
4245  __pyx_t_7 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4246  __Pyx_GOTREF(__pyx_t_7);
4247  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4248  __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4249  __Pyx_GOTREF(__pyx_t_6);
4250  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4251  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4252 
4253  /* "WaveTools.pyx":135
4254  * waveDir = kDir/kAbs
4255  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4256  * V = np.array([UH*waveDir[0]+UV*vDir[0], # <<<<<<<<<<<<<<
4257  * UH*waveDir[1]+UV*vDir[1],
4258  * UH*waveDir[2]+UV*vDir[2]])
4259  */
4260  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4261  __Pyx_GOTREF(__pyx_t_7);
4262  __Pyx_GIVEREF(__pyx_t_3);
4263  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
4264  __Pyx_GIVEREF(__pyx_t_5);
4265  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
4266  __Pyx_GIVEREF(__pyx_t_6);
4267  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
4268  __pyx_t_3 = 0;
4269  __pyx_t_5 = 0;
4270  __pyx_t_6 = 0;
4271  __pyx_t_6 = NULL;
4272  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4273  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
4274  if (likely(__pyx_t_6)) {
4275  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4276  __Pyx_INCREF(__pyx_t_6);
4277  __Pyx_INCREF(function);
4278  __Pyx_DECREF_SET(__pyx_t_2, function);
4279  }
4280  }
4281  if (!__pyx_t_6) {
4282  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4283  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4284  __Pyx_GOTREF(__pyx_t_1);
4285  } else {
4286  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4287  __Pyx_GOTREF(__pyx_t_5);
4288  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
4289  __Pyx_GIVEREF(__pyx_t_7);
4290  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_7);
4291  __pyx_t_7 = 0;
4292  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4293  __Pyx_GOTREF(__pyx_t_1);
4294  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4295  }
4296  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4297  __pyx_v_V = __pyx_t_1;
4298  __pyx_t_1 = 0;
4299 
4300  /* "WaveTools.pyx":138
4301  * UH*waveDir[1]+UV*vDir[1],
4302  * UH*waveDir[2]+UV*vDir[2]])
4303  * return V # <<<<<<<<<<<<<<
4304  *
4305  *
4306  */
4307  __Pyx_XDECREF(__pyx_r);
4308  __Pyx_INCREF(__pyx_v_V);
4309  __pyx_r = __pyx_v_V;
4310  goto __pyx_L0;
4311 
4312  /* "WaveTools.pyx":113
4313  *
4314  *
4315  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
4316  * """Returns a single frequency mode for velocity at point x,y,z,t
4317  * :param kDir: wave number vector [1/L] with three components
4318  */
4319 
4320  /* function exit code */
4321  __pyx_L1_error:;
4322  __Pyx_XDECREF(__pyx_t_1);
4323  __Pyx_XDECREF(__pyx_t_2);
4324  __Pyx_XDECREF(__pyx_t_3);
4325  __Pyx_XDECREF(__pyx_t_4);
4326  __Pyx_XDECREF(__pyx_t_5);
4327  __Pyx_XDECREF(__pyx_t_6);
4328  __Pyx_XDECREF(__pyx_t_7);
4329  __Pyx_AddTraceback("WaveTools.vel_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
4330  __pyx_r = NULL;
4331  __pyx_L0:;
4332  __Pyx_XDECREF(__pyx_v_phase);
4333  __Pyx_XDECREF(__pyx_v_Z);
4334  __Pyx_XDECREF(__pyx_v_UH);
4335  __Pyx_XDECREF(__pyx_v_UV);
4336  __Pyx_XDECREF(__pyx_v_waveDir);
4337  __Pyx_XDECREF(__pyx_v_V);
4338  __Pyx_XGIVEREF(__pyx_r);
4339  __Pyx_RefNannyFinishContext();
4340  return __pyx_r;
4341 }
4342 
4343 /* "WaveTools.pyx":142
4344  *
4345  *
4346  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
4347  * """sigma function for JONSWAP spectrum
4348  * http://www.wikiwaves.org/Ocean-Wave_Sectra
4349  */
4350 
4351 /* Python wrapper */
4352 static PyObject *__pyx_pw_9WaveTools_21sigma(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4353 static char __pyx_doc_9WaveTools_20sigma[] = "sigma(omega, omega0)\nsigma function for JONSWAP spectrum\n http://www.wikiwaves.org/Ocean-Wave_Sectra\n ";
4354 static PyMethodDef __pyx_mdef_9WaveTools_21sigma = {"sigma", (PyCFunction)__pyx_pw_9WaveTools_21sigma, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_20sigma};
4355 static PyObject *__pyx_pw_9WaveTools_21sigma(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4356  PyObject *__pyx_v_omega = 0;
4357  PyObject *__pyx_v_omega0 = 0;
4358  int __pyx_lineno = 0;
4359  const char *__pyx_filename = NULL;
4360  int __pyx_clineno = 0;
4361  PyObject *__pyx_r = 0;
4362  __Pyx_RefNannyDeclarations
4363  __Pyx_RefNannySetupContext("sigma (wrapper)", 0);
4364  {
4365  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_omega,&__pyx_n_s_omega0,0};
4366  PyObject* values[2] = {0,0};
4367  if (unlikely(__pyx_kwds)) {
4368  Py_ssize_t kw_args;
4369  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4370  switch (pos_args) {
4371  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4372  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4373  case 0: break;
4374  default: goto __pyx_L5_argtuple_error;
4375  }
4376  kw_args = PyDict_Size(__pyx_kwds);
4377  switch (pos_args) {
4378  case 0:
4379  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
4380  else goto __pyx_L5_argtuple_error;
4381  case 1:
4382  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega0)) != 0)) kw_args--;
4383  else {
4384  __Pyx_RaiseArgtupleInvalid("sigma", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4385  }
4386  }
4387  if (unlikely(kw_args > 0)) {
4388  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sigma") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4389  }
4390  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
4391  goto __pyx_L5_argtuple_error;
4392  } else {
4393  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4394  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4395  }
4396  __pyx_v_omega = values[0];
4397  __pyx_v_omega0 = values[1];
4398  }
4399  goto __pyx_L4_argument_unpacking_done;
4400  __pyx_L5_argtuple_error:;
4401  __Pyx_RaiseArgtupleInvalid("sigma", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4402  __pyx_L3_error:;
4403  __Pyx_AddTraceback("WaveTools.sigma", __pyx_clineno, __pyx_lineno, __pyx_filename);
4404  __Pyx_RefNannyFinishContext();
4405  return NULL;
4406  __pyx_L4_argument_unpacking_done:;
4407  __pyx_r = __pyx_pf_9WaveTools_20sigma(__pyx_self, __pyx_v_omega, __pyx_v_omega0);
4408 
4409  /* function exit code */
4410  __Pyx_RefNannyFinishContext();
4411  return __pyx_r;
4412 }
4413 
4414 static PyObject *__pyx_pf_9WaveTools_20sigma(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_omega, PyObject *__pyx_v_omega0) {
4415  PyObject *__pyx_v_sigmaReturn = NULL;
4416  PyObject *__pyx_r = NULL;
4417  __Pyx_RefNannyDeclarations
4418  PyObject *__pyx_t_1 = NULL;
4419  PyObject *__pyx_t_2 = NULL;
4420  PyObject *__pyx_t_3 = NULL;
4421  PyObject *__pyx_t_4 = NULL;
4422  Py_ssize_t __pyx_t_5;
4423  PyObject *__pyx_t_6 = NULL;
4424  int __pyx_lineno = 0;
4425  const char *__pyx_filename = NULL;
4426  int __pyx_clineno = 0;
4427  __Pyx_RefNannySetupContext("sigma", 0);
4428 
4429  /* "WaveTools.pyx":146
4430  * http://www.wikiwaves.org/Ocean-Wave_Sectra
4431  * """
4432  * sigmaReturn = np.where(omega > omega0,0.09,0.07) # <<<<<<<<<<<<<<
4433  * return sigmaReturn
4434  *
4435  */
4436  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4437  __Pyx_GOTREF(__pyx_t_2);
4438  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4439  __Pyx_GOTREF(__pyx_t_3);
4440  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4441  __pyx_t_2 = PyObject_RichCompare(__pyx_v_omega, __pyx_v_omega0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4442  __pyx_t_4 = NULL;
4443  __pyx_t_5 = 0;
4444  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
4445  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
4446  if (likely(__pyx_t_4)) {
4447  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
4448  __Pyx_INCREF(__pyx_t_4);
4449  __Pyx_INCREF(function);
4450  __Pyx_DECREF_SET(__pyx_t_3, function);
4451  __pyx_t_5 = 1;
4452  }
4453  }
4454  __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4455  __Pyx_GOTREF(__pyx_t_6);
4456  if (__pyx_t_4) {
4457  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
4458  }
4459  __Pyx_GIVEREF(__pyx_t_2);
4460  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2);
4461  __Pyx_INCREF(__pyx_float_0_09);
4462  __Pyx_GIVEREF(__pyx_float_0_09);
4463  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_float_0_09);
4464  __Pyx_INCREF(__pyx_float_0_07);
4465  __Pyx_GIVEREF(__pyx_float_0_07);
4466  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_float_0_07);
4467  __pyx_t_2 = 0;
4468  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4469  __Pyx_GOTREF(__pyx_t_1);
4470  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4471  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4472  __pyx_v_sigmaReturn = __pyx_t_1;
4473  __pyx_t_1 = 0;
4474 
4475  /* "WaveTools.pyx":147
4476  * """
4477  * sigmaReturn = np.where(omega > omega0,0.09,0.07)
4478  * return sigmaReturn # <<<<<<<<<<<<<<
4479  *
4480  *
4481  */
4482  __Pyx_XDECREF(__pyx_r);
4483  __Pyx_INCREF(__pyx_v_sigmaReturn);
4484  __pyx_r = __pyx_v_sigmaReturn;
4485  goto __pyx_L0;
4486 
4487  /* "WaveTools.pyx":142
4488  *
4489  *
4490  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
4491  * """sigma function for JONSWAP spectrum
4492  * http://www.wikiwaves.org/Ocean-Wave_Sectra
4493  */
4494 
4495  /* function exit code */
4496  __pyx_L1_error:;
4497  __Pyx_XDECREF(__pyx_t_1);
4498  __Pyx_XDECREF(__pyx_t_2);
4499  __Pyx_XDECREF(__pyx_t_3);
4500  __Pyx_XDECREF(__pyx_t_4);
4501  __Pyx_XDECREF(__pyx_t_6);
4502  __Pyx_AddTraceback("WaveTools.sigma", __pyx_clineno, __pyx_lineno, __pyx_filename);
4503  __pyx_r = NULL;
4504  __pyx_L0:;
4505  __Pyx_XDECREF(__pyx_v_sigmaReturn);
4506  __Pyx_XGIVEREF(__pyx_r);
4507  __Pyx_RefNannyFinishContext();
4508  return __pyx_r;
4509 }
4510 
4511 /* "WaveTools.pyx":150
4512  *
4513  *
4514  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
4515  * """The wave spectrum from Joint North Sea Wave Observation Project
4516  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
4517  */
4518 
4519 /* Python wrapper */
4520 static PyObject *__pyx_pw_9WaveTools_23JONSWAP(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4521 static char __pyx_doc_9WaveTools_22JONSWAP[] = "JONSWAP(f, f0, Hs, gamma=3.3, TMA=False, depth=None)\nThe wave spectrum from Joint North Sea Wave Observation Project\n Jonswap equation from \"Random Seas and Design of Maritime Structures\" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15\n TMA modification from \"Random Seas and Design of Maritime Structures\" - Y. Goda - 2010 (3rd ed) eq. 2.19\n :param f: wave frequency [1/T] (not angular frequency)\n :param f0: direcpeak frequency [1/T] (not angular frequency)\n :param Hs: significant wave height [L]\n :param g: gravity [L/T^2]\n :param gamma: peak enhancement factor [-]\n ";
4522 static PyMethodDef __pyx_mdef_9WaveTools_23JONSWAP = {"JONSWAP", (PyCFunction)__pyx_pw_9WaveTools_23JONSWAP, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_22JONSWAP};
4523 static PyObject *__pyx_pw_9WaveTools_23JONSWAP(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4524  PyObject *__pyx_v_f = 0;
4525  PyObject *__pyx_v_f0 = 0;
4526  PyObject *__pyx_v_Hs = 0;
4527  PyObject *__pyx_v_gamma = 0;
4528  PyObject *__pyx_v_TMA = 0;
4529  PyObject *__pyx_v_depth = 0;
4530  int __pyx_lineno = 0;
4531  const char *__pyx_filename = NULL;
4532  int __pyx_clineno = 0;
4533  PyObject *__pyx_r = 0;
4534  __Pyx_RefNannyDeclarations
4535  __Pyx_RefNannySetupContext("JONSWAP (wrapper)", 0);
4536  {
4537  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,&__pyx_n_s_f0,&__pyx_n_s_Hs,&__pyx_n_s_gamma,&__pyx_n_s_TMA,&__pyx_n_s_depth,0};
4538  PyObject* values[6] = {0,0,0,0,0,0};
4539  values[3] = ((PyObject *)__pyx_float_3_3);
4540  values[4] = ((PyObject *)Py_False);
4541  values[5] = ((PyObject *)Py_None);
4542  if (unlikely(__pyx_kwds)) {
4543  Py_ssize_t kw_args;
4544  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4545  switch (pos_args) {
4546  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4547  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4548  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4549  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4550  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4551  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4552  case 0: break;
4553  default: goto __pyx_L5_argtuple_error;
4554  }
4555  kw_args = PyDict_Size(__pyx_kwds);
4556  switch (pos_args) {
4557  case 0:
4558  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
4559  else goto __pyx_L5_argtuple_error;
4560  case 1:
4561  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
4562  else {
4563  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4564  }
4565  case 2:
4566  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
4567  else {
4568  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4569  }
4570  case 3:
4571  if (kw_args > 0) {
4572  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gamma);
4573  if (value) { values[3] = value; kw_args--; }
4574  }
4575  case 4:
4576  if (kw_args > 0) {
4577  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_TMA);
4578  if (value) { values[4] = value; kw_args--; }
4579  }
4580  case 5:
4581  if (kw_args > 0) {
4582  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth);
4583  if (value) { values[5] = value; kw_args--; }
4584  }
4585  }
4586  if (unlikely(kw_args > 0)) {
4587  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "JONSWAP") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4588  }
4589  } else {
4590  switch (PyTuple_GET_SIZE(__pyx_args)) {
4591  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4592  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4593  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4594  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4595  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4596  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4597  break;
4598  default: goto __pyx_L5_argtuple_error;
4599  }
4600  }
4601  __pyx_v_f = values[0];
4602  __pyx_v_f0 = values[1];
4603  __pyx_v_Hs = values[2];
4604  __pyx_v_gamma = values[3];
4605  __pyx_v_TMA = values[4];
4606  __pyx_v_depth = values[5];
4607  }
4608  goto __pyx_L4_argument_unpacking_done;
4609  __pyx_L5_argtuple_error:;
4610  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4611  __pyx_L3_error:;
4612  __Pyx_AddTraceback("WaveTools.JONSWAP", __pyx_clineno, __pyx_lineno, __pyx_filename);
4613  __Pyx_RefNannyFinishContext();
4614  return NULL;
4615  __pyx_L4_argument_unpacking_done:;
4616  __pyx_r = __pyx_pf_9WaveTools_22JONSWAP(__pyx_self, __pyx_v_f, __pyx_v_f0, __pyx_v_Hs, __pyx_v_gamma, __pyx_v_TMA, __pyx_v_depth);
4617 
4618  /* function exit code */
4619  __Pyx_RefNannyFinishContext();
4620  return __pyx_r;
4621 }
4622 
4623 static PyObject *__pyx_pf_9WaveTools_22JONSWAP(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs, PyObject *__pyx_v_gamma, PyObject *__pyx_v_TMA, PyObject *__pyx_v_depth) {
4624  PyObject *__pyx_v_Tp = NULL;
4625  PyObject *__pyx_v_bj = NULL;
4626  PyObject *__pyx_v_r = NULL;
4627  PyObject *__pyx_v_tma = NULL;
4628  PyObject *__pyx_v_k = NULL;
4629  PyObject *__pyx_r = NULL;
4630  __Pyx_RefNannyDeclarations
4631  PyObject *__pyx_t_1 = NULL;
4632  PyObject *__pyx_t_2 = NULL;
4633  PyObject *__pyx_t_3 = NULL;
4634  PyObject *__pyx_t_4 = NULL;
4635  PyObject *__pyx_t_5 = NULL;
4636  PyObject *__pyx_t_6 = NULL;
4637  Py_ssize_t __pyx_t_7;
4638  PyObject *__pyx_t_8 = NULL;
4639  int __pyx_t_9;
4640  int __pyx_lineno = 0;
4641  const char *__pyx_filename = NULL;
4642  int __pyx_clineno = 0;
4643  __Pyx_RefNannySetupContext("JONSWAP", 0);
4644 
4645  /* "WaveTools.pyx":160
4646  * :param gamma: peak enhancement factor [-]
4647  * """
4648  * Tp = 1./f0 # <<<<<<<<<<<<<<
4649  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma))
4650  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4651  */
4652  __pyx_t_1 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_v_f0, 1., 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4653  __Pyx_GOTREF(__pyx_t_1);
4654  __pyx_v_Tp = __pyx_t_1;
4655  __pyx_t_1 = 0;
4656 
4657  /* "WaveTools.pyx":161
4658  * """
4659  * Tp = 1./f0
4660  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma)) # <<<<<<<<<<<<<<
4661  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4662  * tma = 1.
4663  */
4664  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4665  __Pyx_GOTREF(__pyx_t_2);
4666  __pyx_t_3 = NULL;
4667  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4668  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
4669  if (likely(__pyx_t_3)) {
4670  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4671  __Pyx_INCREF(__pyx_t_3);
4672  __Pyx_INCREF(function);
4673  __Pyx_DECREF_SET(__pyx_t_2, function);
4674  }
4675  }
4676  if (!__pyx_t_3) {
4677  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_gamma); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4678  __Pyx_GOTREF(__pyx_t_1);
4679  } else {
4680  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4681  __Pyx_GOTREF(__pyx_t_4);
4682  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
4683  __Pyx_INCREF(__pyx_v_gamma);
4684  __Pyx_GIVEREF(__pyx_v_gamma);
4685  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_gamma);
4686  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4687  __Pyx_GOTREF(__pyx_t_1);
4688  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4689  }
4690  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4691  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_01915, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4692  __Pyx_GOTREF(__pyx_t_2);
4693  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4694  __pyx_t_1 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_094, __pyx_t_2, 1.094, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4695  __Pyx_GOTREF(__pyx_t_1);
4696  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4697  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_0624, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4698  __Pyx_GOTREF(__pyx_t_2);
4699  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4700  __pyx_t_1 = PyNumber_Multiply(__pyx_float_0_0336, __pyx_v_gamma); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4701  __Pyx_GOTREF(__pyx_t_1);
4702  __pyx_t_4 = __Pyx_PyFloat_AddCObj(__pyx_float_0_23, __pyx_t_1, 0.23, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4703  __Pyx_GOTREF(__pyx_t_4);
4704  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4705  __pyx_t_1 = __Pyx_PyFloat_AddCObj(__pyx_float_1_9, __pyx_v_gamma, 1.9, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4706  __Pyx_GOTREF(__pyx_t_1);
4707  __pyx_t_3 = __Pyx_PyFloat_DivideCObj(__pyx_float_0_185, __pyx_t_1, 0.185, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4708  __Pyx_GOTREF(__pyx_t_3);
4709  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4710  __pyx_t_1 = PyNumber_Subtract(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4711  __Pyx_GOTREF(__pyx_t_1);
4712  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4713  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4714  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4715  __Pyx_GOTREF(__pyx_t_3);
4716  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4717  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4718  __pyx_v_bj = __pyx_t_3;
4719  __pyx_t_3 = 0;
4720 
4721  /* "WaveTools.pyx":162
4722  * Tp = 1./f0
4723  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma))
4724  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2)) # <<<<<<<<<<<<<<
4725  * tma = 1.
4726  * if TMA:
4727  */
4728  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4729  __Pyx_GOTREF(__pyx_t_1);
4730  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4731  __Pyx_GOTREF(__pyx_t_2);
4732  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4733  __pyx_t_1 = PyNumber_Multiply(__pyx_v_Tp, __pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4734  __Pyx_GOTREF(__pyx_t_1);
4735  __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_1, __pyx_float_1_, 1., 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4736  __Pyx_GOTREF(__pyx_t_4);
4737  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4738  __pyx_t_1 = PyNumber_Power(__pyx_t_4, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4739  __Pyx_GOTREF(__pyx_t_1);
4740  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4741  __pyx_t_4 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4742  __Pyx_GOTREF(__pyx_t_4);
4743  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4744  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sigma); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4745  __Pyx_GOTREF(__pyx_t_5);
4746  __pyx_t_6 = NULL;
4747  __pyx_t_7 = 0;
4748  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
4749  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
4750  if (likely(__pyx_t_6)) {
4751  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
4752  __Pyx_INCREF(__pyx_t_6);
4753  __Pyx_INCREF(function);
4754  __Pyx_DECREF_SET(__pyx_t_5, function);
4755  __pyx_t_7 = 1;
4756  }
4757  }
4758  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4759  __Pyx_GOTREF(__pyx_t_8);
4760  if (__pyx_t_6) {
4761  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
4762  }
4763  __Pyx_INCREF(__pyx_v_f);
4764  __Pyx_GIVEREF(__pyx_v_f);
4765  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_f);
4766  __Pyx_INCREF(__pyx_v_f0);
4767  __Pyx_GIVEREF(__pyx_v_f0);
4768  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_f0);
4769  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4770  __Pyx_GOTREF(__pyx_t_1);
4771  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
4772  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4773  __pyx_t_5 = PyNumber_Power(__pyx_t_1, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4774  __Pyx_GOTREF(__pyx_t_5);
4775  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4776  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4777  __Pyx_GOTREF(__pyx_t_1);
4778  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4779  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4780  __Pyx_GOTREF(__pyx_t_5);
4781  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4782  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4783  __pyx_t_1 = NULL;
4784  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4785  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
4786  if (likely(__pyx_t_1)) {
4787  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4788  __Pyx_INCREF(__pyx_t_1);
4789  __Pyx_INCREF(function);
4790  __Pyx_DECREF_SET(__pyx_t_2, function);
4791  }
4792  }
4793  if (!__pyx_t_1) {
4794  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4795  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4796  __Pyx_GOTREF(__pyx_t_3);
4797  } else {
4798  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4799  __Pyx_GOTREF(__pyx_t_4);
4800  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
4801  __Pyx_GIVEREF(__pyx_t_5);
4802  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
4803  __pyx_t_5 = 0;
4804  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4805  __Pyx_GOTREF(__pyx_t_3);
4806  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4807  }
4808  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4809  __pyx_v_r = __pyx_t_3;
4810  __pyx_t_3 = 0;
4811 
4812  /* "WaveTools.pyx":163
4813  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma))
4814  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4815  * tma = 1. # <<<<<<<<<<<<<<
4816  * if TMA:
4817  * if (depth == None):
4818  */
4819  __Pyx_INCREF(__pyx_float_1_);
4820  __pyx_v_tma = __pyx_float_1_;
4821 
4822  /* "WaveTools.pyx":164
4823  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4824  * tma = 1.
4825  * if TMA: # <<<<<<<<<<<<<<
4826  * if (depth == None):
4827  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4828  */
4829  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_TMA); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4830  if (__pyx_t_9) {
4831 
4832  /* "WaveTools.pyx":165
4833  * tma = 1.
4834  * if TMA:
4835  * if (depth == None): # <<<<<<<<<<<<<<
4836  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4837  * logEvent("Wavetools:py. Stopping simulation")
4838  */
4839  __pyx_t_3 = PyObject_RichCompare(__pyx_v_depth, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4840  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4841  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4842  if (__pyx_t_9) {
4843 
4844  /* "WaveTools.pyx":166
4845  * if TMA:
4846  * if (depth == None):
4847  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum") # <<<<<<<<<<<<<<
4848  * logEvent("Wavetools:py. Stopping simulation")
4849  * sys.exit(1)
4850  */
4851  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4852  __Pyx_GOTREF(__pyx_t_3);
4853  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4854  __Pyx_GOTREF(__pyx_t_2);
4855  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4856  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4857 
4858  /* "WaveTools.pyx":167
4859  * if (depth == None):
4860  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4861  * logEvent("Wavetools:py. Stopping simulation") # <<<<<<<<<<<<<<
4862  * sys.exit(1)
4863  * k = dispersion(2*pi*f,depth)
4864  */
4865  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4866  __Pyx_GOTREF(__pyx_t_2);
4867  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4868  __Pyx_GOTREF(__pyx_t_3);
4869  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4870  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4871 
4872  /* "WaveTools.pyx":168
4873  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4874  * logEvent("Wavetools:py. Stopping simulation")
4875  * sys.exit(1) # <<<<<<<<<<<<<<
4876  * k = dispersion(2*pi*f,depth)
4877  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
4878  */
4879  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4880  __Pyx_GOTREF(__pyx_t_3);
4881  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4882  __Pyx_GOTREF(__pyx_t_2);
4883  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4884  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4885  __Pyx_GOTREF(__pyx_t_3);
4886  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4887  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4888 
4889  /* "WaveTools.pyx":165
4890  * tma = 1.
4891  * if TMA:
4892  * if (depth == None): # <<<<<<<<<<<<<<
4893  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4894  * logEvent("Wavetools:py. Stopping simulation")
4895  */
4896  }
4897 
4898  /* "WaveTools.pyx":169
4899  * logEvent("Wavetools:py. Stopping simulation")
4900  * sys.exit(1)
4901  * k = dispersion(2*pi*f,depth) # <<<<<<<<<<<<<<
4902  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
4903  *
4904  */
4905  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4906  __Pyx_GOTREF(__pyx_t_2);
4907  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4908  __Pyx_GOTREF(__pyx_t_4);
4909  __pyx_t_5 = PyNumber_Multiply(__pyx_int_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4910  __Pyx_GOTREF(__pyx_t_5);
4911  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4912  __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_v_f); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4913  __Pyx_GOTREF(__pyx_t_4);
4914  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4915  __pyx_t_5 = NULL;
4916  __pyx_t_7 = 0;
4917  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4918  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
4919  if (likely(__pyx_t_5)) {
4920  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4921  __Pyx_INCREF(__pyx_t_5);
4922  __Pyx_INCREF(function);
4923  __Pyx_DECREF_SET(__pyx_t_2, function);
4924  __pyx_t_7 = 1;
4925  }
4926  }
4927  __pyx_t_1 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4928  __Pyx_GOTREF(__pyx_t_1);
4929  if (__pyx_t_5) {
4930  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
4931  }
4932  __Pyx_GIVEREF(__pyx_t_4);
4933  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_7, __pyx_t_4);
4934  __Pyx_INCREF(__pyx_v_depth);
4935  __Pyx_GIVEREF(__pyx_v_depth);
4936  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_7, __pyx_v_depth);
4937  __pyx_t_4 = 0;
4938  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4939  __Pyx_GOTREF(__pyx_t_3);
4940  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4941  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4942  __pyx_v_k = __pyx_t_3;
4943  __pyx_t_3 = 0;
4944 
4945  /* "WaveTools.pyx":170
4946  * sys.exit(1)
4947  * k = dispersion(2*pi*f,depth)
4948  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth)) # <<<<<<<<<<<<<<
4949  *
4950  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
4951  */
4952  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4953  __Pyx_GOTREF(__pyx_t_2);
4954  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_tanh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4955  __Pyx_GOTREF(__pyx_t_1);
4956  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4957  __pyx_t_2 = PyNumber_Multiply(__pyx_v_k, __pyx_v_depth); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4958  __Pyx_GOTREF(__pyx_t_2);
4959  __pyx_t_4 = NULL;
4960  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
4961  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
4962  if (likely(__pyx_t_4)) {
4963  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4964  __Pyx_INCREF(__pyx_t_4);
4965  __Pyx_INCREF(function);
4966  __Pyx_DECREF_SET(__pyx_t_1, function);
4967  }
4968  }
4969  if (!__pyx_t_4) {
4970  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4971  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4972  __Pyx_GOTREF(__pyx_t_3);
4973  } else {
4974  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4975  __Pyx_GOTREF(__pyx_t_5);
4976  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
4977  __Pyx_GIVEREF(__pyx_t_2);
4978  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
4979  __pyx_t_2 = 0;
4980  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4981  __Pyx_GOTREF(__pyx_t_3);
4982  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4983  }
4984  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4985  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4986  __Pyx_GOTREF(__pyx_t_5);
4987  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tanh); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4988  __Pyx_GOTREF(__pyx_t_2);
4989  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4990  __pyx_t_5 = PyNumber_Multiply(__pyx_v_k, __pyx_v_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4991  __Pyx_GOTREF(__pyx_t_5);
4992  __pyx_t_4 = NULL;
4993  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4994  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
4995  if (likely(__pyx_t_4)) {
4996  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4997  __Pyx_INCREF(__pyx_t_4);
4998  __Pyx_INCREF(function);
4999  __Pyx_DECREF_SET(__pyx_t_2, function);
5000  }
5001  }
5002  if (!__pyx_t_4) {
5003  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5004  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5005  __Pyx_GOTREF(__pyx_t_1);
5006  } else {
5007  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5008  __Pyx_GOTREF(__pyx_t_8);
5009  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
5010  __Pyx_GIVEREF(__pyx_t_5);
5011  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
5012  __pyx_t_5 = 0;
5013  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5014  __Pyx_GOTREF(__pyx_t_1);
5015  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5016  }
5017  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5018  __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5019  __Pyx_GOTREF(__pyx_t_2);
5020  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5021  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5022  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_, __pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5023  __Pyx_GOTREF(__pyx_t_1);
5024  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_depth); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5025  __Pyx_GOTREF(__pyx_t_3);
5026  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5027  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5028  __Pyx_GOTREF(__pyx_t_8);
5029  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_sinh); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5030  __Pyx_GOTREF(__pyx_t_5);
5031  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5032  __pyx_t_8 = PyNumber_Multiply(__pyx_float_2_, __pyx_v_k); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5033  __Pyx_GOTREF(__pyx_t_8);
5034  __pyx_t_4 = PyNumber_Multiply(__pyx_t_8, __pyx_v_depth); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5035  __Pyx_GOTREF(__pyx_t_4);
5036  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5037  __pyx_t_8 = NULL;
5038  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
5039  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
5040  if (likely(__pyx_t_8)) {
5041  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
5042  __Pyx_INCREF(__pyx_t_8);
5043  __Pyx_INCREF(function);
5044  __Pyx_DECREF_SET(__pyx_t_5, function);
5045  }
5046  }
5047  if (!__pyx_t_8) {
5048  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5049  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5050  __Pyx_GOTREF(__pyx_t_1);
5051  } else {
5052  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5053  __Pyx_GOTREF(__pyx_t_6);
5054  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
5055  __Pyx_GIVEREF(__pyx_t_4);
5056  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
5057  __pyx_t_4 = 0;
5058  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5059  __Pyx_GOTREF(__pyx_t_1);
5060  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5061  }
5062  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5063  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5064  __Pyx_GOTREF(__pyx_t_5);
5065  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5066  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5067  __pyx_t_1 = __Pyx_PyFloat_AddCObj(__pyx_float_1_, __pyx_t_5, 1., 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5068  __Pyx_GOTREF(__pyx_t_1);
5069  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5070  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5071  __Pyx_GOTREF(__pyx_t_5);
5072  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5073  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5074  __Pyx_DECREF_SET(__pyx_v_tma, __pyx_t_5);
5075  __pyx_t_5 = 0;
5076 
5077  /* "WaveTools.pyx":164
5078  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
5079  * tma = 1.
5080  * if TMA: # <<<<<<<<<<<<<<
5081  * if (depth == None):
5082  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
5083  */
5084  }
5085 
5086  /* "WaveTools.pyx":172
5087  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
5088  *
5089  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r) # <<<<<<<<<<<<<<
5090  *
5091  * def PM_mod(f,f0,Hs):
5092  */
5093  __Pyx_XDECREF(__pyx_r);
5094  __pyx_t_5 = PyNumber_Multiply(__pyx_v_tma, __pyx_v_bj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5095  __Pyx_GOTREF(__pyx_t_5);
5096  __pyx_t_1 = PyNumber_Power(__pyx_v_Hs, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5097  __Pyx_GOTREF(__pyx_t_1);
5098  __pyx_t_2 = PyNumber_Multiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5099  __Pyx_GOTREF(__pyx_t_2);
5100  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5101  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5102  __pyx_t_1 = PyNumber_Power(__pyx_v_Tp, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5103  __Pyx_GOTREF(__pyx_t_1);
5104  __pyx_t_5 = PyNumber_Power(__pyx_v_f, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5105  __Pyx_GOTREF(__pyx_t_5);
5106  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5107  __Pyx_GOTREF(__pyx_t_3);
5108  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5109  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5110  __pyx_t_5 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5111  __Pyx_GOTREF(__pyx_t_5);
5112  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5113  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5114  __Pyx_GOTREF(__pyx_t_3);
5115  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5116  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5117  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5118  __Pyx_GOTREF(__pyx_t_2);
5119  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5120  __Pyx_GOTREF(__pyx_t_1);
5121  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5122  __pyx_t_2 = PyNumber_Multiply(__pyx_v_Tp, __pyx_v_f); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5123  __Pyx_GOTREF(__pyx_t_2);
5124  __pyx_t_6 = PyNumber_Power(__pyx_t_2, __pyx_float_4_, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5125  __Pyx_GOTREF(__pyx_t_6);
5126  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5127  __pyx_t_2 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_t_6, 1., 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5128  __Pyx_GOTREF(__pyx_t_2);
5129  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5130  __pyx_t_6 = PyNumber_Multiply(__pyx_float_neg_1_25, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5131  __Pyx_GOTREF(__pyx_t_6);
5132  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5133  __pyx_t_2 = NULL;
5134  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
5135  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
5136  if (likely(__pyx_t_2)) {
5137  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
5138  __Pyx_INCREF(__pyx_t_2);
5139  __Pyx_INCREF(function);
5140  __Pyx_DECREF_SET(__pyx_t_1, function);
5141  }
5142  }
5143  if (!__pyx_t_2) {
5144  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5145  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5146  __Pyx_GOTREF(__pyx_t_5);
5147  } else {
5148  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5149  __Pyx_GOTREF(__pyx_t_4);
5150  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
5151  __Pyx_GIVEREF(__pyx_t_6);
5152  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
5153  __pyx_t_6 = 0;
5154  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5155  __Pyx_GOTREF(__pyx_t_5);
5156  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5157  }
5158  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5159  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5160  __Pyx_GOTREF(__pyx_t_1);
5161  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5162  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5163  __pyx_t_5 = PyNumber_Power(__pyx_v_gamma, __pyx_v_r, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5164  __Pyx_GOTREF(__pyx_t_5);
5165  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5166  __Pyx_GOTREF(__pyx_t_3);
5167  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5168  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5169  __pyx_r = __pyx_t_3;
5170  __pyx_t_3 = 0;
5171  goto __pyx_L0;
5172 
5173  /* "WaveTools.pyx":150
5174  *
5175  *
5176  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
5177  * """The wave spectrum from Joint North Sea Wave Observation Project
5178  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
5179  */
5180 
5181  /* function exit code */
5182  __pyx_L1_error:;
5183  __Pyx_XDECREF(__pyx_t_1);
5184  __Pyx_XDECREF(__pyx_t_2);
5185  __Pyx_XDECREF(__pyx_t_3);
5186  __Pyx_XDECREF(__pyx_t_4);
5187  __Pyx_XDECREF(__pyx_t_5);
5188  __Pyx_XDECREF(__pyx_t_6);
5189  __Pyx_XDECREF(__pyx_t_8);
5190  __Pyx_AddTraceback("WaveTools.JONSWAP", __pyx_clineno, __pyx_lineno, __pyx_filename);
5191  __pyx_r = NULL;
5192  __pyx_L0:;
5193  __Pyx_XDECREF(__pyx_v_Tp);
5194  __Pyx_XDECREF(__pyx_v_bj);
5195  __Pyx_XDECREF(__pyx_v_r);
5196  __Pyx_XDECREF(__pyx_v_tma);
5197  __Pyx_XDECREF(__pyx_v_k);
5198  __Pyx_XGIVEREF(__pyx_r);
5199  __Pyx_RefNannyFinishContext();
5200  return __pyx_r;
5201 }
5202 
5203 /* "WaveTools.pyx":174
5204  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
5205  *
5206  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
5207  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
5208  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
5209  */
5210 
5211 /* Python wrapper */
5212 static PyObject *__pyx_pw_9WaveTools_25PM_mod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5213 static char __pyx_doc_9WaveTools_24PM_mod[] = "PM_mod(f, f0, Hs)\nmodified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)\n Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm\n And then to Tucker M J, 1991. Waves in Ocean Engineering. Ellis Horwood Ltd. (Chichester).\n :param f: frequency [1/T]\n :param f0: peak frequency [1/T]\n :param alpha: alpha fitting parameter [-]\n :param beta: beta fitting parameter [-]\n :param g: graivty [L/T^2]\n ";
5214 static PyMethodDef __pyx_mdef_9WaveTools_25PM_mod = {"PM_mod", (PyCFunction)__pyx_pw_9WaveTools_25PM_mod, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_24PM_mod};
5215 static PyObject *__pyx_pw_9WaveTools_25PM_mod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5216  PyObject *__pyx_v_f = 0;
5217  PyObject *__pyx_v_f0 = 0;
5218  PyObject *__pyx_v_Hs = 0;
5219  int __pyx_lineno = 0;
5220  const char *__pyx_filename = NULL;
5221  int __pyx_clineno = 0;
5222  PyObject *__pyx_r = 0;
5223  __Pyx_RefNannyDeclarations
5224  __Pyx_RefNannySetupContext("PM_mod (wrapper)", 0);
5225  {
5226  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,&__pyx_n_s_f0,&__pyx_n_s_Hs,0};
5227  PyObject* values[3] = {0,0,0};
5228  if (unlikely(__pyx_kwds)) {
5229  Py_ssize_t kw_args;
5230  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5231  switch (pos_args) {
5232  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5233  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5234  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5235  case 0: break;
5236  default: goto __pyx_L5_argtuple_error;
5237  }
5238  kw_args = PyDict_Size(__pyx_kwds);
5239  switch (pos_args) {
5240  case 0:
5241  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
5242  else goto __pyx_L5_argtuple_error;
5243  case 1:
5244  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
5245  else {
5246  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5247  }
5248  case 2:
5249  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
5250  else {
5251  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5252  }
5253  }
5254  if (unlikely(kw_args > 0)) {
5255  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "PM_mod") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5256  }
5257  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
5258  goto __pyx_L5_argtuple_error;
5259  } else {
5260  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5261  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5262  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5263  }
5264  __pyx_v_f = values[0];
5265  __pyx_v_f0 = values[1];
5266  __pyx_v_Hs = values[2];
5267  }
5268  goto __pyx_L4_argument_unpacking_done;
5269  __pyx_L5_argtuple_error:;
5270  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5271  __pyx_L3_error:;
5272  __Pyx_AddTraceback("WaveTools.PM_mod", __pyx_clineno, __pyx_lineno, __pyx_filename);
5273  __Pyx_RefNannyFinishContext();
5274  return NULL;
5275  __pyx_L4_argument_unpacking_done:;
5276  __pyx_r = __pyx_pf_9WaveTools_24PM_mod(__pyx_self, __pyx_v_f, __pyx_v_f0, __pyx_v_Hs);
5277 
5278  /* function exit code */
5279  __Pyx_RefNannyFinishContext();
5280  return __pyx_r;
5281 }
5282 
5283 static PyObject *__pyx_pf_9WaveTools_24PM_mod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs) {
5284  PyObject *__pyx_r = NULL;
5285  __Pyx_RefNannyDeclarations
5286  PyObject *__pyx_t_1 = NULL;
5287  PyObject *__pyx_t_2 = NULL;
5288  PyObject *__pyx_t_3 = NULL;
5289  PyObject *__pyx_t_4 = NULL;
5290  PyObject *__pyx_t_5 = NULL;
5291  PyObject *__pyx_t_6 = NULL;
5292  int __pyx_lineno = 0;
5293  const char *__pyx_filename = NULL;
5294  int __pyx_clineno = 0;
5295  __Pyx_RefNannySetupContext("PM_mod", 0);
5296 
5297  /* "WaveTools.pyx":184
5298  * :param g: graivty [L/T^2]
5299  * """
5300  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4) # <<<<<<<<<<<<<<
5301  *
5302  * def cos2s(theta,f,s=10):
5303  */
5304  __Pyx_XDECREF(__pyx_r);
5305  __pyx_t_1 = PyFloat_FromDouble((5.0 / 16.0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5306  __Pyx_GOTREF(__pyx_t_1);
5307  __pyx_t_2 = PyNumber_Power(__pyx_v_Hs, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5308  __Pyx_GOTREF(__pyx_t_2);
5309  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5310  __Pyx_GOTREF(__pyx_t_3);
5311  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5312  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5313  __pyx_t_2 = PyNumber_Power(__pyx_v_f0, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5314  __Pyx_GOTREF(__pyx_t_2);
5315  __pyx_t_1 = PyNumber_Power(__pyx_v_f, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5316  __Pyx_GOTREF(__pyx_t_1);
5317  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5318  __Pyx_GOTREF(__pyx_t_4);
5319  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5320  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5321  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5322  __Pyx_GOTREF(__pyx_t_1);
5323  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5324  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5325  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5326  __Pyx_GOTREF(__pyx_t_3);
5327  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5328  __Pyx_GOTREF(__pyx_t_2);
5329  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5330  __pyx_t_3 = PyFloat_FromDouble((-5.0 / 4.0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5331  __Pyx_GOTREF(__pyx_t_3);
5332  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_f0, __pyx_v_f); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5333  __Pyx_GOTREF(__pyx_t_5);
5334  __pyx_t_6 = PyNumber_Power(__pyx_t_5, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5335  __Pyx_GOTREF(__pyx_t_6);
5336  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5337  __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5338  __Pyx_GOTREF(__pyx_t_5);
5339  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5340  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5341  __pyx_t_6 = NULL;
5342  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
5343  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
5344  if (likely(__pyx_t_6)) {
5345  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5346  __Pyx_INCREF(__pyx_t_6);
5347  __Pyx_INCREF(function);
5348  __Pyx_DECREF_SET(__pyx_t_2, function);
5349  }
5350  }
5351  if (!__pyx_t_6) {
5352  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5353  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5354  __Pyx_GOTREF(__pyx_t_4);
5355  } else {
5356  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5357  __Pyx_GOTREF(__pyx_t_3);
5358  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
5359  __Pyx_GIVEREF(__pyx_t_5);
5360  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
5361  __pyx_t_5 = 0;
5362  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5363  __Pyx_GOTREF(__pyx_t_4);
5364  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5365  }
5366  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5367  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5368  __Pyx_GOTREF(__pyx_t_2);
5369  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5370  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5371  __pyx_r = __pyx_t_2;
5372  __pyx_t_2 = 0;
5373  goto __pyx_L0;
5374 
5375  /* "WaveTools.pyx":174
5376  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
5377  *
5378  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
5379  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
5380  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
5381  */
5382 
5383  /* function exit code */
5384  __pyx_L1_error:;
5385  __Pyx_XDECREF(__pyx_t_1);
5386  __Pyx_XDECREF(__pyx_t_2);
5387  __Pyx_XDECREF(__pyx_t_3);
5388  __Pyx_XDECREF(__pyx_t_4);
5389  __Pyx_XDECREF(__pyx_t_5);
5390  __Pyx_XDECREF(__pyx_t_6);
5391  __Pyx_AddTraceback("WaveTools.PM_mod", __pyx_clineno, __pyx_lineno, __pyx_filename);
5392  __pyx_r = NULL;
5393  __pyx_L0:;
5394  __Pyx_XGIVEREF(__pyx_r);
5395  __Pyx_RefNannyFinishContext();
5396  return __pyx_r;
5397 }
5398 
5399 /* "WaveTools.pyx":186
5400  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
5401  *
5402  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
5403  * """The cos2s wave directional Spread
5404  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
5405  */
5406 
5407 /* Python wrapper */
5408 static PyObject *__pyx_pw_9WaveTools_27cos2s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5409 static char __pyx_doc_9WaveTools_26cos2s[] = "cos2s(theta, f, s=10)\nThe cos2s wave directional Spread \n see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf\n :param theta: ange of wave direction, with respect to the peak direction\n :param f: wave frequency [1/T] (not angular frequency). Dummy variable in this one\n :param s: directional peak parameter. as s ->oo the distribution converges to \n ";
5410 static PyMethodDef __pyx_mdef_9WaveTools_27cos2s = {"cos2s", (PyCFunction)__pyx_pw_9WaveTools_27cos2s, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_26cos2s};
5411 static PyObject *__pyx_pw_9WaveTools_27cos2s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5412  PyObject *__pyx_v_theta = 0;
5413  PyObject *__pyx_v_f = 0;
5414  PyObject *__pyx_v_s = 0;
5415  int __pyx_lineno = 0;
5416  const char *__pyx_filename = NULL;
5417  int __pyx_clineno = 0;
5418  PyObject *__pyx_r = 0;
5419  __Pyx_RefNannyDeclarations
5420  __Pyx_RefNannySetupContext("cos2s (wrapper)", 0);
5421  {
5422  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_theta,&__pyx_n_s_f,&__pyx_n_s_s,0};
5423  PyObject* values[3] = {0,0,0};
5424  values[2] = ((PyObject *)__pyx_int_10);
5425  if (unlikely(__pyx_kwds)) {
5426  Py_ssize_t kw_args;
5427  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5428  switch (pos_args) {
5429  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5430  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5431  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5432  case 0: break;
5433  default: goto __pyx_L5_argtuple_error;
5434  }
5435  kw_args = PyDict_Size(__pyx_kwds);
5436  switch (pos_args) {
5437  case 0:
5438  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--;
5439  else goto __pyx_L5_argtuple_error;
5440  case 1:
5441  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
5442  else {
5443  __Pyx_RaiseArgtupleInvalid("cos2s", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5444  }
5445  case 2:
5446  if (kw_args > 0) {
5447  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_s);
5448  if (value) { values[2] = value; kw_args--; }
5449  }
5450  }
5451  if (unlikely(kw_args > 0)) {
5452  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cos2s") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5453  }
5454  } else {
5455  switch (PyTuple_GET_SIZE(__pyx_args)) {
5456  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5457  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5458  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5459  break;
5460  default: goto __pyx_L5_argtuple_error;
5461  }
5462  }
5463  __pyx_v_theta = values[0];
5464  __pyx_v_f = values[1];
5465  __pyx_v_s = values[2];
5466  }
5467  goto __pyx_L4_argument_unpacking_done;
5468  __pyx_L5_argtuple_error:;
5469  __Pyx_RaiseArgtupleInvalid("cos2s", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5470  __pyx_L3_error:;
5471  __Pyx_AddTraceback("WaveTools.cos2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
5472  __Pyx_RefNannyFinishContext();
5473  return NULL;
5474  __pyx_L4_argument_unpacking_done:;
5475  __pyx_r = __pyx_pf_9WaveTools_26cos2s(__pyx_self, __pyx_v_theta, __pyx_v_f, __pyx_v_s);
5476 
5477  /* function exit code */
5478  __Pyx_RefNannyFinishContext();
5479  return __pyx_r;
5480 }
5481 
5482 static PyObject *__pyx_pf_9WaveTools_26cos2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_f, PyObject *__pyx_v_s) {
5483  PyObject *__pyx_v_fun = NULL;
5484  Py_ssize_t __pyx_v_ii;
5485  PyObject *__pyx_r = NULL;
5486  __Pyx_RefNannyDeclarations
5487  PyObject *__pyx_t_1 = NULL;
5488  PyObject *__pyx_t_2 = NULL;
5489  PyObject *__pyx_t_3 = NULL;
5490  Py_ssize_t __pyx_t_4;
5491  PyObject *__pyx_t_5 = NULL;
5492  PyObject *__pyx_t_6 = NULL;
5493  Py_ssize_t __pyx_t_7;
5494  int __pyx_lineno = 0;
5495  const char *__pyx_filename = NULL;
5496  int __pyx_clineno = 0;
5497  __Pyx_RefNannySetupContext("cos2s", 0);
5498 
5499  /* "WaveTools.pyx":193
5500  * :param s: directional peak parameter. as s ->oo the distribution converges to
5501  * """
5502  * fun = np.zeros((len(theta),len(f)),) # <<<<<<<<<<<<<<
5503  * for ii in range(len(fun[0,:])):
5504  * fun[:,ii] = np.cos(theta/2)**(2*s)
5505  */
5506  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5507  __Pyx_GOTREF(__pyx_t_2);
5508  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5509  __Pyx_GOTREF(__pyx_t_3);
5510  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5511  __pyx_t_4 = PyObject_Length(__pyx_v_theta); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5512  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5513  __Pyx_GOTREF(__pyx_t_2);
5514  __pyx_t_4 = PyObject_Length(__pyx_v_f); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5515  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5516  __Pyx_GOTREF(__pyx_t_5);
5517  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5518  __Pyx_GOTREF(__pyx_t_6);
5519  __Pyx_GIVEREF(__pyx_t_2);
5520  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
5521  __Pyx_GIVEREF(__pyx_t_5);
5522  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
5523  __pyx_t_2 = 0;
5524  __pyx_t_5 = 0;
5525  __pyx_t_5 = NULL;
5526  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
5527  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
5528  if (likely(__pyx_t_5)) {
5529  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
5530  __Pyx_INCREF(__pyx_t_5);
5531  __Pyx_INCREF(function);
5532  __Pyx_DECREF_SET(__pyx_t_3, function);
5533  }
5534  }
5535  if (!__pyx_t_5) {
5536  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5537  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5538  __Pyx_GOTREF(__pyx_t_1);
5539  } else {
5540  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5541  __Pyx_GOTREF(__pyx_t_2);
5542  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
5543  __Pyx_GIVEREF(__pyx_t_6);
5544  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_6);
5545  __pyx_t_6 = 0;
5546  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5547  __Pyx_GOTREF(__pyx_t_1);
5548  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5549  }
5550  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5551  __pyx_v_fun = __pyx_t_1;
5552  __pyx_t_1 = 0;
5553 
5554  /* "WaveTools.pyx":194
5555  * """
5556  * fun = np.zeros((len(theta),len(f)),)
5557  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
5558  * fun[:,ii] = np.cos(theta/2)**(2*s)
5559  * return fun
5560  */
5561  __pyx_t_1 = PyObject_GetItem(__pyx_v_fun, __pyx_tuple__32); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5562  __Pyx_GOTREF(__pyx_t_1);
5563  __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5564  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5565  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_4; __pyx_t_7+=1) {
5566  __pyx_v_ii = __pyx_t_7;
5567 
5568  /* "WaveTools.pyx":195
5569  * fun = np.zeros((len(theta),len(f)),)
5570  * for ii in range(len(fun[0,:])):
5571  * fun[:,ii] = np.cos(theta/2)**(2*s) # <<<<<<<<<<<<<<
5572  * return fun
5573  * def mitsuyasu(theta,fi,f0,smax=10):
5574  */
5575  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5576  __Pyx_GOTREF(__pyx_t_3);
5577  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_cos); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5578  __Pyx_GOTREF(__pyx_t_2);
5579  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5580  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_theta, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5581  __Pyx_GOTREF(__pyx_t_3);
5582  __pyx_t_6 = NULL;
5583  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
5584  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
5585  if (likely(__pyx_t_6)) {
5586  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5587  __Pyx_INCREF(__pyx_t_6);
5588  __Pyx_INCREF(function);
5589  __Pyx_DECREF_SET(__pyx_t_2, function);
5590  }
5591  }
5592  if (!__pyx_t_6) {
5593  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5594  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5595  __Pyx_GOTREF(__pyx_t_1);
5596  } else {
5597  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5598  __Pyx_GOTREF(__pyx_t_5);
5599  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
5600  __Pyx_GIVEREF(__pyx_t_3);
5601  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
5602  __pyx_t_3 = 0;
5603  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5604  __Pyx_GOTREF(__pyx_t_1);
5605  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5606  }
5607  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5608  __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, __pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5609  __Pyx_GOTREF(__pyx_t_2);
5610  __pyx_t_5 = PyNumber_Power(__pyx_t_1, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5611  __Pyx_GOTREF(__pyx_t_5);
5612  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5613  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5614  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5615  __Pyx_GOTREF(__pyx_t_2);
5616  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5617  __Pyx_GOTREF(__pyx_t_1);
5618  __Pyx_INCREF(__pyx_slice__33);
5619  __Pyx_GIVEREF(__pyx_slice__33);
5620  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__33);
5621  __Pyx_GIVEREF(__pyx_t_2);
5622  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
5623  __pyx_t_2 = 0;
5624  if (unlikely(PyObject_SetItem(__pyx_v_fun, __pyx_t_1, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5625  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5626  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5627  }
5628 
5629  /* "WaveTools.pyx":196
5630  * for ii in range(len(fun[0,:])):
5631  * fun[:,ii] = np.cos(theta/2)**(2*s)
5632  * return fun # <<<<<<<<<<<<<<
5633  * def mitsuyasu(theta,fi,f0,smax=10):
5634  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
5635  */
5636  __Pyx_XDECREF(__pyx_r);
5637  __Pyx_INCREF(__pyx_v_fun);
5638  __pyx_r = __pyx_v_fun;
5639  goto __pyx_L0;
5640 
5641  /* "WaveTools.pyx":186
5642  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
5643  *
5644  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
5645  * """The cos2s wave directional Spread
5646  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
5647  */
5648 
5649  /* function exit code */
5650  __pyx_L1_error:;
5651  __Pyx_XDECREF(__pyx_t_1);
5652  __Pyx_XDECREF(__pyx_t_2);
5653  __Pyx_XDECREF(__pyx_t_3);
5654  __Pyx_XDECREF(__pyx_t_5);
5655  __Pyx_XDECREF(__pyx_t_6);
5656  __Pyx_AddTraceback("WaveTools.cos2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
5657  __pyx_r = NULL;
5658  __pyx_L0:;
5659  __Pyx_XDECREF(__pyx_v_fun);
5660  __Pyx_XGIVEREF(__pyx_r);
5661  __Pyx_RefNannyFinishContext();
5662  return __pyx_r;
5663 }
5664 
5665 /* "WaveTools.pyx":197
5666  * fun[:,ii] = np.cos(theta/2)**(2*s)
5667  * return fun
5668  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
5669  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
5670  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
5671  */
5672 
5673 /* Python wrapper */
5674 static PyObject *__pyx_pw_9WaveTools_29mitsuyasu(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5675 static char __pyx_doc_9WaveTools_28mitsuyasu[] = "mitsuyasu(theta, fi, f0, smax=10)\nThe cos2s wave directional spread with wave frequency dependency (mitsuyasu spread) \n Equation from \"Random Seas and Design of Maritime Structures\" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25\n :param theta: ange of wave direction, with respect to the peak direction\n :param f: wave frequency [1/T] (not angular frequency). Dummy variable in this one\n :param s: directional peak parameter. as s ->oo the distribution converges to \n ";
5676 static PyMethodDef __pyx_mdef_9WaveTools_29mitsuyasu = {"mitsuyasu", (PyCFunction)__pyx_pw_9WaveTools_29mitsuyasu, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_28mitsuyasu};
5677 static PyObject *__pyx_pw_9WaveTools_29mitsuyasu(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5678  PyObject *__pyx_v_theta = 0;
5679  PyObject *__pyx_v_fi = 0;
5680  PyObject *__pyx_v_f0 = 0;
5681  PyObject *__pyx_v_smax = 0;
5682  int __pyx_lineno = 0;
5683  const char *__pyx_filename = NULL;
5684  int __pyx_clineno = 0;
5685  PyObject *__pyx_r = 0;
5686  __Pyx_RefNannyDeclarations
5687  __Pyx_RefNannySetupContext("mitsuyasu (wrapper)", 0);
5688  {
5689  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_theta,&__pyx_n_s_fi,&__pyx_n_s_f0,&__pyx_n_s_smax,0};
5690  PyObject* values[4] = {0,0,0,0};
5691  values[3] = ((PyObject *)__pyx_int_10);
5692  if (unlikely(__pyx_kwds)) {
5693  Py_ssize_t kw_args;
5694  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5695  switch (pos_args) {
5696  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5697  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5698  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5699  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5700  case 0: break;
5701  default: goto __pyx_L5_argtuple_error;
5702  }
5703  kw_args = PyDict_Size(__pyx_kwds);
5704  switch (pos_args) {
5705  case 0:
5706  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--;
5707  else goto __pyx_L5_argtuple_error;
5708  case 1:
5709  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
5710  else {
5711  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5712  }
5713  case 2:
5714  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
5715  else {
5716  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5717  }
5718  case 3:
5719  if (kw_args > 0) {
5720  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_smax);
5721  if (value) { values[3] = value; kw_args--; }
5722  }
5723  }
5724  if (unlikely(kw_args > 0)) {
5725  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mitsuyasu") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5726  }
5727  } else {
5728  switch (PyTuple_GET_SIZE(__pyx_args)) {
5729  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5730  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5731  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5732  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5733  break;
5734  default: goto __pyx_L5_argtuple_error;
5735  }
5736  }
5737  __pyx_v_theta = values[0];
5738  __pyx_v_fi = values[1];
5739  __pyx_v_f0 = values[2];
5740  __pyx_v_smax = values[3];
5741  }
5742  goto __pyx_L4_argument_unpacking_done;
5743  __pyx_L5_argtuple_error:;
5744  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5745  __pyx_L3_error:;
5746  __Pyx_AddTraceback("WaveTools.mitsuyasu", __pyx_clineno, __pyx_lineno, __pyx_filename);
5747  __Pyx_RefNannyFinishContext();
5748  return NULL;
5749  __pyx_L4_argument_unpacking_done:;
5750  __pyx_r = __pyx_pf_9WaveTools_28mitsuyasu(__pyx_self, __pyx_v_theta, __pyx_v_fi, __pyx_v_f0, __pyx_v_smax);
5751 
5752  /* function exit code */
5753  __Pyx_RefNannyFinishContext();
5754  return __pyx_r;
5755 }
5756 
5757 static PyObject *__pyx_pf_9WaveTools_28mitsuyasu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_fi, PyObject *__pyx_v_f0, PyObject *__pyx_v_smax) {
5758  PyObject *__pyx_v_s = NULL;
5759  PyObject *__pyx_v_ii = NULL;
5760  PyObject *__pyx_v_fun = NULL;
5761  PyObject *__pyx_r = NULL;
5762  __Pyx_RefNannyDeclarations
5763  PyObject *__pyx_t_1 = NULL;
5764  PyObject *__pyx_t_2 = NULL;
5765  PyObject *__pyx_t_3 = NULL;
5766  PyObject *__pyx_t_4 = NULL;
5767  PyObject *__pyx_t_5 = NULL;
5768  Py_ssize_t __pyx_t_6;
5769  PyObject *(*__pyx_t_7)(PyObject *);
5770  PyObject *__pyx_t_8 = NULL;
5771  int __pyx_lineno = 0;
5772  const char *__pyx_filename = NULL;
5773  int __pyx_clineno = 0;
5774  __Pyx_RefNannySetupContext("mitsuyasu", 0);
5775 
5776  /* "WaveTools.pyx":205
5777  * """
5778  *
5779  * s = smax * (fi/f0)**(5) # <<<<<<<<<<<<<<
5780  * ii = np.where(fi>f0)[0][0]
5781  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5782  */
5783  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_fi, __pyx_v_f0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5784  __Pyx_GOTREF(__pyx_t_1);
5785  __pyx_t_2 = PyNumber_Power(__pyx_t_1, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5786  __Pyx_GOTREF(__pyx_t_2);
5787  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5788  __pyx_t_1 = PyNumber_Multiply(__pyx_v_smax, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5789  __Pyx_GOTREF(__pyx_t_1);
5790  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5791  __pyx_v_s = __pyx_t_1;
5792  __pyx_t_1 = 0;
5793 
5794  /* "WaveTools.pyx":206
5795  *
5796  * s = smax * (fi/f0)**(5)
5797  * ii = np.where(fi>f0)[0][0] # <<<<<<<<<<<<<<
5798  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5799  * fun = np.zeros((len(theta),len(fi)),)
5800  */
5801  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5802  __Pyx_GOTREF(__pyx_t_2);
5803  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5804  __Pyx_GOTREF(__pyx_t_3);
5805  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5806  __pyx_t_2 = PyObject_RichCompare(__pyx_v_fi, __pyx_v_f0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5807  __pyx_t_4 = NULL;
5808  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
5809  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
5810  if (likely(__pyx_t_4)) {
5811  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
5812  __Pyx_INCREF(__pyx_t_4);
5813  __Pyx_INCREF(function);
5814  __Pyx_DECREF_SET(__pyx_t_3, function);
5815  }
5816  }
5817  if (!__pyx_t_4) {
5818  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5819  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5820  __Pyx_GOTREF(__pyx_t_1);
5821  } else {
5822  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5823  __Pyx_GOTREF(__pyx_t_5);
5824  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
5825  __Pyx_GIVEREF(__pyx_t_2);
5826  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
5827  __pyx_t_2 = 0;
5828  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5829  __Pyx_GOTREF(__pyx_t_1);
5830  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5831  }
5832  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5833  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5834  __Pyx_GOTREF(__pyx_t_3);
5835  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5836  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5837  __Pyx_GOTREF(__pyx_t_1);
5838  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5839  __pyx_v_ii = __pyx_t_1;
5840  __pyx_t_1 = 0;
5841 
5842  /* "WaveTools.pyx":207
5843  * s = smax * (fi/f0)**(5)
5844  * ii = np.where(fi>f0)[0][0]
5845  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5) # <<<<<<<<<<<<<<
5846  * fun = np.zeros((len(theta),len(fi)),)
5847  * for ii in range(len(fun[0,:])):
5848  */
5849  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 0, 0, &__pyx_v_ii, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5850  __Pyx_GOTREF(__pyx_t_1);
5851  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_f0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5852  __Pyx_GOTREF(__pyx_t_3);
5853  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5854  __pyx_t_1 = PyNumber_Power(__pyx_t_3, __pyx_float_neg_2_5, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5855  __Pyx_GOTREF(__pyx_t_1);
5856  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5857  __pyx_t_3 = PyNumber_Multiply(__pyx_v_smax, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5858  __Pyx_GOTREF(__pyx_t_3);
5859  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5860  if (__Pyx_PyObject_SetSlice(__pyx_v_s, __pyx_t_3, 0, 0, &__pyx_v_ii, NULL, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5861  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5862 
5863  /* "WaveTools.pyx":208
5864  * ii = np.where(fi>f0)[0][0]
5865  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5866  * fun = np.zeros((len(theta),len(fi)),) # <<<<<<<<<<<<<<
5867  * for ii in range(len(fun[0,:])):
5868  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
5869  */
5870  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5871  __Pyx_GOTREF(__pyx_t_1);
5872  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5873  __Pyx_GOTREF(__pyx_t_5);
5874  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5875  __pyx_t_6 = PyObject_Length(__pyx_v_theta); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5876  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5877  __Pyx_GOTREF(__pyx_t_1);
5878  __pyx_t_6 = PyObject_Length(__pyx_v_fi); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5879  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5880  __Pyx_GOTREF(__pyx_t_2);
5881  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5882  __Pyx_GOTREF(__pyx_t_4);
5883  __Pyx_GIVEREF(__pyx_t_1);
5884  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
5885  __Pyx_GIVEREF(__pyx_t_2);
5886  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
5887  __pyx_t_1 = 0;
5888  __pyx_t_2 = 0;
5889  __pyx_t_2 = NULL;
5890  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
5891  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
5892  if (likely(__pyx_t_2)) {
5893  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
5894  __Pyx_INCREF(__pyx_t_2);
5895  __Pyx_INCREF(function);
5896  __Pyx_DECREF_SET(__pyx_t_5, function);
5897  }
5898  }
5899  if (!__pyx_t_2) {
5900  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5901  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5902  __Pyx_GOTREF(__pyx_t_3);
5903  } else {
5904  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5905  __Pyx_GOTREF(__pyx_t_1);
5906  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
5907  __Pyx_GIVEREF(__pyx_t_4);
5908  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4);
5909  __pyx_t_4 = 0;
5910  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5911  __Pyx_GOTREF(__pyx_t_3);
5912  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5913  }
5914  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5915  __pyx_v_fun = __pyx_t_3;
5916  __pyx_t_3 = 0;
5917 
5918  /* "WaveTools.pyx":209
5919  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5920  * fun = np.zeros((len(theta),len(fi)),)
5921  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
5922  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
5923  * return fun
5924  */
5925  __pyx_t_3 = PyObject_GetItem(__pyx_v_fun, __pyx_tuple__35); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5926  __Pyx_GOTREF(__pyx_t_3);
5927  __pyx_t_6 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5928  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5929  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5930  __Pyx_GOTREF(__pyx_t_3);
5931  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5932  __Pyx_GOTREF(__pyx_t_5);
5933  __Pyx_GIVEREF(__pyx_t_3);
5934  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
5935  __pyx_t_3 = 0;
5936  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5937  __Pyx_GOTREF(__pyx_t_3);
5938  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5939  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
5940  __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
5941  __pyx_t_7 = NULL;
5942  } else {
5943  __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5944  __Pyx_GOTREF(__pyx_t_5);
5945  __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5946  }
5947  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5948  for (;;) {
5949  if (likely(!__pyx_t_7)) {
5950  if (likely(PyList_CheckExact(__pyx_t_5))) {
5951  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
5952  #if CYTHON_COMPILING_IN_CPYTHON
5953  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5954  #else
5955  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5956  __Pyx_GOTREF(__pyx_t_3);
5957  #endif
5958  } else {
5959  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
5960  #if CYTHON_COMPILING_IN_CPYTHON
5961  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5962  #else
5963  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5964  __Pyx_GOTREF(__pyx_t_3);
5965  #endif
5966  }
5967  } else {
5968  __pyx_t_3 = __pyx_t_7(__pyx_t_5);
5969  if (unlikely(!__pyx_t_3)) {
5970  PyObject* exc_type = PyErr_Occurred();
5971  if (exc_type) {
5972  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
5973  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5974  }
5975  break;
5976  }
5977  __Pyx_GOTREF(__pyx_t_3);
5978  }
5979  __Pyx_DECREF_SET(__pyx_v_ii, __pyx_t_3);
5980  __pyx_t_3 = 0;
5981 
5982  /* "WaveTools.pyx":210
5983  * fun = np.zeros((len(theta),len(fi)),)
5984  * for ii in range(len(fun[0,:])):
5985  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii]) # <<<<<<<<<<<<<<
5986  * return fun
5987  *
5988  */
5989  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5990  __Pyx_GOTREF(__pyx_t_1);
5991  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5992  __Pyx_GOTREF(__pyx_t_4);
5993  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5994  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_theta, __pyx_int_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5995  __Pyx_GOTREF(__pyx_t_1);
5996  __pyx_t_2 = NULL;
5997  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
5998  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
5999  if (likely(__pyx_t_2)) {
6000  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6001  __Pyx_INCREF(__pyx_t_2);
6002  __Pyx_INCREF(function);
6003  __Pyx_DECREF_SET(__pyx_t_4, function);
6004  }
6005  }
6006  if (!__pyx_t_2) {
6007  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6008  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6009  __Pyx_GOTREF(__pyx_t_3);
6010  } else {
6011  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6012  __Pyx_GOTREF(__pyx_t_8);
6013  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
6014  __Pyx_GIVEREF(__pyx_t_1);
6015  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
6016  __pyx_t_1 = 0;
6017  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6018  __Pyx_GOTREF(__pyx_t_3);
6019  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6020  }
6021  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6022  __pyx_t_4 = PyObject_GetItem(__pyx_v_s, __pyx_v_ii); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
6023  __Pyx_GOTREF(__pyx_t_4);
6024  __pyx_t_8 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6025  __Pyx_GOTREF(__pyx_t_8);
6026  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6027  __pyx_t_4 = PyNumber_Power(__pyx_t_3, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6028  __Pyx_GOTREF(__pyx_t_4);
6029  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6030  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6031  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6032  __Pyx_GOTREF(__pyx_t_8);
6033  __Pyx_INCREF(__pyx_slice__36);
6034  __Pyx_GIVEREF(__pyx_slice__36);
6035  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_slice__36);
6036  __Pyx_INCREF(__pyx_v_ii);
6037  __Pyx_GIVEREF(__pyx_v_ii);
6038  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
6039  if (unlikely(PyObject_SetItem(__pyx_v_fun, __pyx_t_8, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6040  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6041  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6042 
6043  /* "WaveTools.pyx":209
6044  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
6045  * fun = np.zeros((len(theta),len(fi)),)
6046  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
6047  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
6048  * return fun
6049  */
6050  }
6051  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6052 
6053  /* "WaveTools.pyx":211
6054  * for ii in range(len(fun[0,:])):
6055  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
6056  * return fun # <<<<<<<<<<<<<<
6057  *
6058  *
6059  */
6060  __Pyx_XDECREF(__pyx_r);
6061  __Pyx_INCREF(__pyx_v_fun);
6062  __pyx_r = __pyx_v_fun;
6063  goto __pyx_L0;
6064 
6065  /* "WaveTools.pyx":197
6066  * fun[:,ii] = np.cos(theta/2)**(2*s)
6067  * return fun
6068  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
6069  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
6070  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
6071  */
6072 
6073  /* function exit code */
6074  __pyx_L1_error:;
6075  __Pyx_XDECREF(__pyx_t_1);
6076  __Pyx_XDECREF(__pyx_t_2);
6077  __Pyx_XDECREF(__pyx_t_3);
6078  __Pyx_XDECREF(__pyx_t_4);
6079  __Pyx_XDECREF(__pyx_t_5);
6080  __Pyx_XDECREF(__pyx_t_8);
6081  __Pyx_AddTraceback("WaveTools.mitsuyasu", __pyx_clineno, __pyx_lineno, __pyx_filename);
6082  __pyx_r = NULL;
6083  __pyx_L0:;
6084  __Pyx_XDECREF(__pyx_v_s);
6085  __Pyx_XDECREF(__pyx_v_ii);
6086  __Pyx_XDECREF(__pyx_v_fun);
6087  __Pyx_XGIVEREF(__pyx_r);
6088  __Pyx_RefNannyFinishContext();
6089  return __pyx_r;
6090 }
6091 
6092 /* "WaveTools.pyx":217
6093  *
6094  *
6095  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
6096  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
6097  *
6098  */
6099 
6100 /* Python wrapper */
6101 static PyObject *__pyx_pw_9WaveTools_31dispersion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6102 static char __pyx_doc_9WaveTools_30dispersion[] = "dispersion(w, d, g=9.81, niter=1000)\nCalculates wave number magnitude as a scallar or an arry of modes linear dispersion relation\n\n :param w: cyclical frequency (can be scalar or an aray of frequency modes)\n :param d: depth [L]\n :param niter: number of solution iterations\n :param g: gravity [L/T^2\n ";
6103 static PyMethodDef __pyx_mdef_9WaveTools_31dispersion = {"dispersion", (PyCFunction)__pyx_pw_9WaveTools_31dispersion, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_30dispersion};
6104 static PyObject *__pyx_pw_9WaveTools_31dispersion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6105  PyObject *__pyx_v_w = 0;
6106  PyObject *__pyx_v_d = 0;
6107  PyObject *__pyx_v_g = 0;
6108  PyObject *__pyx_v_niter = 0;
6109  int __pyx_lineno = 0;
6110  const char *__pyx_filename = NULL;
6111  int __pyx_clineno = 0;
6112  PyObject *__pyx_r = 0;
6113  __Pyx_RefNannyDeclarations
6114  __Pyx_RefNannySetupContext("dispersion (wrapper)", 0);
6115  {
6116  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,&__pyx_n_s_d,&__pyx_n_s_g,&__pyx_n_s_niter,0};
6117  PyObject* values[4] = {0,0,0,0};
6118  values[2] = ((PyObject *)__pyx_float_9_81);
6119  values[3] = ((PyObject *)__pyx_int_1000);
6120  if (unlikely(__pyx_kwds)) {
6121  Py_ssize_t kw_args;
6122  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6123  switch (pos_args) {
6124  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6125  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6126  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6127  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6128  case 0: break;
6129  default: goto __pyx_L5_argtuple_error;
6130  }
6131  kw_args = PyDict_Size(__pyx_kwds);
6132  switch (pos_args) {
6133  case 0:
6134  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--;
6135  else goto __pyx_L5_argtuple_error;
6136  case 1:
6137  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
6138  else {
6139  __Pyx_RaiseArgtupleInvalid("dispersion", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6140  }
6141  case 2:
6142  if (kw_args > 0) {
6143  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g);
6144  if (value) { values[2] = value; kw_args--; }
6145  }
6146  case 3:
6147  if (kw_args > 0) {
6148  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_niter);
6149  if (value) { values[3] = value; kw_args--; }
6150  }
6151  }
6152  if (unlikely(kw_args > 0)) {
6153  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dispersion") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6154  }
6155  } else {
6156  switch (PyTuple_GET_SIZE(__pyx_args)) {
6157  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6158  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6159  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6160  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6161  break;
6162  default: goto __pyx_L5_argtuple_error;
6163  }
6164  }
6165  __pyx_v_w = values[0];
6166  __pyx_v_d = values[1];
6167  __pyx_v_g = values[2];
6168  __pyx_v_niter = values[3];
6169  }
6170  goto __pyx_L4_argument_unpacking_done;
6171  __pyx_L5_argtuple_error:;
6172  __Pyx_RaiseArgtupleInvalid("dispersion", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6173  __pyx_L3_error:;
6174  __Pyx_AddTraceback("WaveTools.dispersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
6175  __Pyx_RefNannyFinishContext();
6176  return NULL;
6177  __pyx_L4_argument_unpacking_done:;
6178  __pyx_r = __pyx_pf_9WaveTools_30dispersion(__pyx_self, __pyx_v_w, __pyx_v_d, __pyx_v_g, __pyx_v_niter);
6179 
6180  /* function exit code */
6181  __Pyx_RefNannyFinishContext();
6182  return __pyx_r;
6183 }
6184 
6185 static PyObject *__pyx_pf_9WaveTools_30dispersion(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_w, PyObject *__pyx_v_d, PyObject *__pyx_v_g, PyObject *__pyx_v_niter) {
6186  PyObject *__pyx_v_w_aux = NULL;
6187  PyObject *__pyx_v_K = NULL;
6188  CYTHON_UNUSED PyObject *__pyx_v_jj = NULL;
6189  PyObject *__pyx_r = NULL;
6190  __Pyx_RefNannyDeclarations
6191  PyObject *__pyx_t_1 = NULL;
6192  PyObject *__pyx_t_2 = NULL;
6193  PyObject *__pyx_t_3 = NULL;
6194  PyObject *__pyx_t_4 = NULL;
6195  Py_ssize_t __pyx_t_5;
6196  PyObject *(*__pyx_t_6)(PyObject *);
6197  PyObject *__pyx_t_7 = NULL;
6198  PyObject *__pyx_t_8 = NULL;
6199  PyObject *__pyx_t_9 = NULL;
6200  int __pyx_t_10;
6201  int __pyx_t_11;
6202  int __pyx_lineno = 0;
6203  const char *__pyx_filename = NULL;
6204  int __pyx_clineno = 0;
6205  __Pyx_RefNannySetupContext("dispersion", 0);
6206 
6207  /* "WaveTools.pyx":226
6208  * """
6209  * # print("Initiating dispersion")
6210  * w_aux = np.array(w) # <<<<<<<<<<<<<<
6211  * K = w_aux**2/g
6212  * # print("Initial dispersion value = %s" %str(Kd/d))
6213  */
6214  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6215  __Pyx_GOTREF(__pyx_t_2);
6216  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6217  __Pyx_GOTREF(__pyx_t_3);
6218  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6219  __pyx_t_2 = NULL;
6220  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
6221  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
6222  if (likely(__pyx_t_2)) {
6223  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6224  __Pyx_INCREF(__pyx_t_2);
6225  __Pyx_INCREF(function);
6226  __Pyx_DECREF_SET(__pyx_t_3, function);
6227  }
6228  }
6229  if (!__pyx_t_2) {
6230  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_w); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6231  __Pyx_GOTREF(__pyx_t_1);
6232  } else {
6233  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6234  __Pyx_GOTREF(__pyx_t_4);
6235  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
6236  __Pyx_INCREF(__pyx_v_w);
6237  __Pyx_GIVEREF(__pyx_v_w);
6238  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_w);
6239  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6240  __Pyx_GOTREF(__pyx_t_1);
6241  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6242  }
6243  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6244  __pyx_v_w_aux = __pyx_t_1;
6245  __pyx_t_1 = 0;
6246 
6247  /* "WaveTools.pyx":227
6248  * # print("Initiating dispersion")
6249  * w_aux = np.array(w)
6250  * K = w_aux**2/g # <<<<<<<<<<<<<<
6251  * # print("Initial dispersion value = %s" %str(Kd/d))
6252  * for jj in range(niter):
6253  */
6254  __pyx_t_1 = PyNumber_Power(__pyx_v_w_aux, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6255  __Pyx_GOTREF(__pyx_t_1);
6256  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6257  __Pyx_GOTREF(__pyx_t_3);
6258  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6259  __pyx_v_K = __pyx_t_3;
6260  __pyx_t_3 = 0;
6261 
6262  /* "WaveTools.pyx":229
6263  * K = w_aux**2/g
6264  * # print("Initial dispersion value = %s" %str(Kd/d))
6265  * for jj in range(niter): # <<<<<<<<<<<<<<
6266  * #Kdn_1 = Kd
6267  * K = w_aux**2/(g*np.tanh(K*d))
6268  */
6269  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6270  __Pyx_GOTREF(__pyx_t_3);
6271  __Pyx_INCREF(__pyx_v_niter);
6272  __Pyx_GIVEREF(__pyx_v_niter);
6273  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_niter);
6274  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6275  __Pyx_GOTREF(__pyx_t_1);
6276  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6277  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
6278  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
6279  __pyx_t_6 = NULL;
6280  } else {
6281  __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6282  __Pyx_GOTREF(__pyx_t_3);
6283  __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6284  }
6285  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6286  for (;;) {
6287  if (likely(!__pyx_t_6)) {
6288  if (likely(PyList_CheckExact(__pyx_t_3))) {
6289  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
6290  #if CYTHON_COMPILING_IN_CPYTHON
6291  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6292  #else
6293  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6294  __Pyx_GOTREF(__pyx_t_1);
6295  #endif
6296  } else {
6297  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
6298  #if CYTHON_COMPILING_IN_CPYTHON
6299  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6300  #else
6301  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6302  __Pyx_GOTREF(__pyx_t_1);
6303  #endif
6304  }
6305  } else {
6306  __pyx_t_1 = __pyx_t_6(__pyx_t_3);
6307  if (unlikely(!__pyx_t_1)) {
6308  PyObject* exc_type = PyErr_Occurred();
6309  if (exc_type) {
6310  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
6311  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6312  }
6313  break;
6314  }
6315  __Pyx_GOTREF(__pyx_t_1);
6316  }
6317  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
6318  __pyx_t_1 = 0;
6319 
6320  /* "WaveTools.pyx":231
6321  * for jj in range(niter):
6322  * #Kdn_1 = Kd
6323  * K = w_aux**2/(g*np.tanh(K*d)) # <<<<<<<<<<<<<<
6324  * #Kdn_1 /=0.01*Kd
6325  * #Kdn_1 -= 100.
6326  */
6327  __pyx_t_1 = PyNumber_Power(__pyx_v_w_aux, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6328  __Pyx_GOTREF(__pyx_t_1);
6329  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6330  __Pyx_GOTREF(__pyx_t_2);
6331  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_tanh); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6332  __Pyx_GOTREF(__pyx_t_7);
6333  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6334  __pyx_t_2 = PyNumber_Multiply(__pyx_v_K, __pyx_v_d); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6335  __Pyx_GOTREF(__pyx_t_2);
6336  __pyx_t_8 = NULL;
6337  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
6338  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
6339  if (likely(__pyx_t_8)) {
6340  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
6341  __Pyx_INCREF(__pyx_t_8);
6342  __Pyx_INCREF(function);
6343  __Pyx_DECREF_SET(__pyx_t_7, function);
6344  }
6345  }
6346  if (!__pyx_t_8) {
6347  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6348  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6349  __Pyx_GOTREF(__pyx_t_4);
6350  } else {
6351  __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6352  __Pyx_GOTREF(__pyx_t_9);
6353  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
6354  __Pyx_GIVEREF(__pyx_t_2);
6355  PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_2);
6356  __pyx_t_2 = 0;
6357  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6358  __Pyx_GOTREF(__pyx_t_4);
6359  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6360  }
6361  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6362  __pyx_t_7 = PyNumber_Multiply(__pyx_v_g, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6363  __Pyx_GOTREF(__pyx_t_7);
6364  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6365  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6366  __Pyx_GOTREF(__pyx_t_4);
6367  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6368  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6369  __Pyx_DECREF_SET(__pyx_v_K, __pyx_t_4);
6370  __pyx_t_4 = 0;
6371 
6372  /* "WaveTools.pyx":229
6373  * K = w_aux**2/g
6374  * # print("Initial dispersion value = %s" %str(Kd/d))
6375  * for jj in range(niter): # <<<<<<<<<<<<<<
6376  * #Kdn_1 = Kd
6377  * K = w_aux**2/(g*np.tanh(K*d))
6378  */
6379  }
6380  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6381 
6382  /* "WaveTools.pyx":240
6383  * # print("Final k value = %s" %str(Kd/d))
6384  * # print("Wavelength= %s" %str(2.*pi*d/Kd))
6385  * if type(K) is float: # <<<<<<<<<<<<<<
6386  * return K[0]
6387  * else:
6388  */
6389  __pyx_t_10 = (((PyObject *)Py_TYPE(__pyx_v_K)) == ((PyObject *)(&PyFloat_Type)));
6390  __pyx_t_11 = (__pyx_t_10 != 0);
6391  if (__pyx_t_11) {
6392 
6393  /* "WaveTools.pyx":241
6394  * # print("Wavelength= %s" %str(2.*pi*d/Kd))
6395  * if type(K) is float:
6396  * return K[0] # <<<<<<<<<<<<<<
6397  * else:
6398  * return K
6399  */
6400  __Pyx_XDECREF(__pyx_r);
6401  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_K, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
6402  __Pyx_GOTREF(__pyx_t_3);
6403  __pyx_r = __pyx_t_3;
6404  __pyx_t_3 = 0;
6405  goto __pyx_L0;
6406 
6407  /* "WaveTools.pyx":240
6408  * # print("Final k value = %s" %str(Kd/d))
6409  * # print("Wavelength= %s" %str(2.*pi*d/Kd))
6410  * if type(K) is float: # <<<<<<<<<<<<<<
6411  * return K[0]
6412  * else:
6413  */
6414  }
6415 
6416  /* "WaveTools.pyx":243
6417  * return K[0]
6418  * else:
6419  * return K # <<<<<<<<<<<<<<
6420  *
6421  *
6422  */
6423  /*else*/ {
6424  __Pyx_XDECREF(__pyx_r);
6425  __Pyx_INCREF(__pyx_v_K);
6426  __pyx_r = __pyx_v_K;
6427  goto __pyx_L0;
6428  }
6429 
6430  /* "WaveTools.pyx":217
6431  *
6432  *
6433  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
6434  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
6435  *
6436  */
6437 
6438  /* function exit code */
6439  __pyx_L1_error:;
6440  __Pyx_XDECREF(__pyx_t_1);
6441  __Pyx_XDECREF(__pyx_t_2);
6442  __Pyx_XDECREF(__pyx_t_3);
6443  __Pyx_XDECREF(__pyx_t_4);
6444  __Pyx_XDECREF(__pyx_t_7);
6445  __Pyx_XDECREF(__pyx_t_8);
6446  __Pyx_XDECREF(__pyx_t_9);
6447  __Pyx_AddTraceback("WaveTools.dispersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
6448  __pyx_r = NULL;
6449  __pyx_L0:;
6450  __Pyx_XDECREF(__pyx_v_w_aux);
6451  __Pyx_XDECREF(__pyx_v_K);
6452  __Pyx_XDECREF(__pyx_v_jj);
6453  __Pyx_XGIVEREF(__pyx_r);
6454  __Pyx_RefNannyFinishContext();
6455  return __pyx_r;
6456 }
6457 
6458 /* "WaveTools.pyx":246
6459  *
6460  *
6461  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
6462  * """ returns a top hat filter
6463  * :param l: array length
6464  */
6465 
6466 /* Python wrapper */
6467 static PyObject *__pyx_pw_9WaveTools_33tophat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6468 static char __pyx_doc_9WaveTools_32tophat[] = "tophat(l, cutoff)\n returns a top hat filter \n :param l: array length\n :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements\n\n ";
6469 static PyMethodDef __pyx_mdef_9WaveTools_33tophat = {"tophat", (PyCFunction)__pyx_pw_9WaveTools_33tophat, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_32tophat};
6470 static PyObject *__pyx_pw_9WaveTools_33tophat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6471  PyObject *__pyx_v_l = 0;
6472  PyObject *__pyx_v_cutoff = 0;
6473  int __pyx_lineno = 0;
6474  const char *__pyx_filename = NULL;
6475  int __pyx_clineno = 0;
6476  PyObject *__pyx_r = 0;
6477  __Pyx_RefNannyDeclarations
6478  __Pyx_RefNannySetupContext("tophat (wrapper)", 0);
6479  {
6480  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_l,&__pyx_n_s_cutoff,0};
6481  PyObject* values[2] = {0,0};
6482  if (unlikely(__pyx_kwds)) {
6483  Py_ssize_t kw_args;
6484  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6485  switch (pos_args) {
6486  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6487  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6488  case 0: break;
6489  default: goto __pyx_L5_argtuple_error;
6490  }
6491  kw_args = PyDict_Size(__pyx_kwds);
6492  switch (pos_args) {
6493  case 0:
6494  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
6495  else goto __pyx_L5_argtuple_error;
6496  case 1:
6497  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cutoff)) != 0)) kw_args--;
6498  else {
6499  __Pyx_RaiseArgtupleInvalid("tophat", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6500  }
6501  }
6502  if (unlikely(kw_args > 0)) {
6503  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tophat") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6504  }
6505  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
6506  goto __pyx_L5_argtuple_error;
6507  } else {
6508  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6509  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6510  }
6511  __pyx_v_l = values[0];
6512  __pyx_v_cutoff = values[1];
6513  }
6514  goto __pyx_L4_argument_unpacking_done;
6515  __pyx_L5_argtuple_error:;
6516  __Pyx_RaiseArgtupleInvalid("tophat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6517  __pyx_L3_error:;
6518  __Pyx_AddTraceback("WaveTools.tophat", __pyx_clineno, __pyx_lineno, __pyx_filename);
6519  __Pyx_RefNannyFinishContext();
6520  return NULL;
6521  __pyx_L4_argument_unpacking_done:;
6522  __pyx_r = __pyx_pf_9WaveTools_32tophat(__pyx_self, __pyx_v_l, __pyx_v_cutoff);
6523 
6524  /* function exit code */
6525  __Pyx_RefNannyFinishContext();
6526  return __pyx_r;
6527 }
6528 
6529 static PyObject *__pyx_pf_9WaveTools_32tophat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff) {
6530  PyObject *__pyx_v_a = NULL;
6531  PyObject *__pyx_v_cut = NULL;
6532  PyObject *__pyx_r = NULL;
6533  __Pyx_RefNannyDeclarations
6534  PyObject *__pyx_t_1 = NULL;
6535  PyObject *__pyx_t_2 = NULL;
6536  PyObject *__pyx_t_3 = NULL;
6537  PyObject *__pyx_t_4 = NULL;
6538  int __pyx_lineno = 0;
6539  const char *__pyx_filename = NULL;
6540  int __pyx_clineno = 0;
6541  __Pyx_RefNannySetupContext("tophat", 0);
6542 
6543  /* "WaveTools.pyx":252
6544  *
6545  * """
6546  * a = np.zeros(l,) # <<<<<<<<<<<<<<
6547  * cut = int(cutoff*l)
6548  * a[cut:-cut] = 1.
6549  */
6550  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6551  __Pyx_GOTREF(__pyx_t_2);
6552  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6553  __Pyx_GOTREF(__pyx_t_3);
6554  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6555  __pyx_t_2 = NULL;
6556  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
6557  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
6558  if (likely(__pyx_t_2)) {
6559  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6560  __Pyx_INCREF(__pyx_t_2);
6561  __Pyx_INCREF(function);
6562  __Pyx_DECREF_SET(__pyx_t_3, function);
6563  }
6564  }
6565  if (!__pyx_t_2) {
6566  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6567  __Pyx_GOTREF(__pyx_t_1);
6568  } else {
6569  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6570  __Pyx_GOTREF(__pyx_t_4);
6571  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
6572  __Pyx_INCREF(__pyx_v_l);
6573  __Pyx_GIVEREF(__pyx_v_l);
6574  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_l);
6575  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6576  __Pyx_GOTREF(__pyx_t_1);
6577  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6578  }
6579  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6580  __pyx_v_a = __pyx_t_1;
6581  __pyx_t_1 = 0;
6582 
6583  /* "WaveTools.pyx":253
6584  * """
6585  * a = np.zeros(l,)
6586  * cut = int(cutoff*l) # <<<<<<<<<<<<<<
6587  * a[cut:-cut] = 1.
6588  * return a
6589  */
6590  __pyx_t_1 = PyNumber_Multiply(__pyx_v_cutoff, __pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6591  __Pyx_GOTREF(__pyx_t_1);
6592  __pyx_t_3 = PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6593  __Pyx_GOTREF(__pyx_t_3);
6594  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6595  __pyx_v_cut = __pyx_t_3;
6596  __pyx_t_3 = 0;
6597 
6598  /* "WaveTools.pyx":254
6599  * a = np.zeros(l,)
6600  * cut = int(cutoff*l)
6601  * a[cut:-cut] = 1. # <<<<<<<<<<<<<<
6602  * return a
6603  *
6604  */
6605  __pyx_t_3 = PyNumber_Negative(__pyx_v_cut); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6606  __Pyx_GOTREF(__pyx_t_3);
6607  if (__Pyx_PyObject_SetSlice(__pyx_v_a, __pyx_float_1_, 0, 0, &__pyx_v_cut, &__pyx_t_3, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6608  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6609 
6610  /* "WaveTools.pyx":255
6611  * cut = int(cutoff*l)
6612  * a[cut:-cut] = 1.
6613  * return a # <<<<<<<<<<<<<<
6614  *
6615  * def costap(l,cutoff=0.1):
6616  */
6617  __Pyx_XDECREF(__pyx_r);
6618  __Pyx_INCREF(__pyx_v_a);
6619  __pyx_r = __pyx_v_a;
6620  goto __pyx_L0;
6621 
6622  /* "WaveTools.pyx":246
6623  *
6624  *
6625  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
6626  * """ returns a top hat filter
6627  * :param l: array length
6628  */
6629 
6630  /* function exit code */
6631  __pyx_L1_error:;
6632  __Pyx_XDECREF(__pyx_t_1);
6633  __Pyx_XDECREF(__pyx_t_2);
6634  __Pyx_XDECREF(__pyx_t_3);
6635  __Pyx_XDECREF(__pyx_t_4);
6636  __Pyx_AddTraceback("WaveTools.tophat", __pyx_clineno, __pyx_lineno, __pyx_filename);
6637  __pyx_r = NULL;
6638  __pyx_L0:;
6639  __Pyx_XDECREF(__pyx_v_a);
6640  __Pyx_XDECREF(__pyx_v_cut);
6641  __Pyx_XGIVEREF(__pyx_r);
6642  __Pyx_RefNannyFinishContext();
6643  return __pyx_r;
6644 }
6645 
6646 /* "WaveTools.pyx":257
6647  * return a
6648  *
6649  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
6650  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
6651  * :param l: array length
6652  */
6653 
6654 /* Python wrapper */
6655 static PyObject *__pyx_pw_9WaveTools_35costap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6656 static char __pyx_doc_9WaveTools_34costap[] = "costap(l, cutoff=0.1)\n Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40 \n :param l: array length\n :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements";
6657 static PyMethodDef __pyx_mdef_9WaveTools_35costap = {"costap", (PyCFunction)__pyx_pw_9WaveTools_35costap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_34costap};
6658 static PyObject *__pyx_pw_9WaveTools_35costap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6659  PyObject *__pyx_v_l = 0;
6660  PyObject *__pyx_v_cutoff = 0;
6661  int __pyx_lineno = 0;
6662  const char *__pyx_filename = NULL;
6663  int __pyx_clineno = 0;
6664  PyObject *__pyx_r = 0;
6665  __Pyx_RefNannyDeclarations
6666  __Pyx_RefNannySetupContext("costap (wrapper)", 0);
6667  {
6668  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_l,&__pyx_n_s_cutoff,0};
6669  PyObject* values[2] = {0,0};
6670  values[1] = ((PyObject *)__pyx_float_0_1);
6671  if (unlikely(__pyx_kwds)) {
6672  Py_ssize_t kw_args;
6673  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6674  switch (pos_args) {
6675  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6676  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6677  case 0: break;
6678  default: goto __pyx_L5_argtuple_error;
6679  }
6680  kw_args = PyDict_Size(__pyx_kwds);
6681  switch (pos_args) {
6682  case 0:
6683  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
6684  else goto __pyx_L5_argtuple_error;
6685  case 1:
6686  if (kw_args > 0) {
6687  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cutoff);
6688  if (value) { values[1] = value; kw_args--; }
6689  }
6690  }
6691  if (unlikely(kw_args > 0)) {
6692  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "costap") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6693  }
6694  } else {
6695  switch (PyTuple_GET_SIZE(__pyx_args)) {
6696  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6697  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6698  break;
6699  default: goto __pyx_L5_argtuple_error;
6700  }
6701  }
6702  __pyx_v_l = values[0];
6703  __pyx_v_cutoff = values[1];
6704  }
6705  goto __pyx_L4_argument_unpacking_done;
6706  __pyx_L5_argtuple_error:;
6707  __Pyx_RaiseArgtupleInvalid("costap", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6708  __pyx_L3_error:;
6709  __Pyx_AddTraceback("WaveTools.costap", __pyx_clineno, __pyx_lineno, __pyx_filename);
6710  __Pyx_RefNannyFinishContext();
6711  return NULL;
6712  __pyx_L4_argument_unpacking_done:;
6713  __pyx_r = __pyx_pf_9WaveTools_34costap(__pyx_self, __pyx_v_l, __pyx_v_cutoff);
6714 
6715  /* function exit code */
6716  __Pyx_RefNannyFinishContext();
6717  return __pyx_r;
6718 }
6719 
6720 static PyObject *__pyx_pf_9WaveTools_34costap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff) {
6721  PyObject *__pyx_v_npoints = NULL;
6722  PyObject *__pyx_v_wind = NULL;
6723  PyObject *__pyx_v_k = NULL;
6724  PyObject *__pyx_r = NULL;
6725  __Pyx_RefNannyDeclarations
6726  PyObject *__pyx_t_1 = NULL;
6727  PyObject *__pyx_t_2 = NULL;
6728  PyObject *__pyx_t_3 = NULL;
6729  PyObject *__pyx_t_4 = NULL;
6730  Py_ssize_t __pyx_t_5;
6731  PyObject *(*__pyx_t_6)(PyObject *);
6732  int __pyx_t_7;
6733  double __pyx_t_8;
6734  PyObject *__pyx_t_9 = NULL;
6735  PyObject *__pyx_t_10 = NULL;
6736  int __pyx_lineno = 0;
6737  const char *__pyx_filename = NULL;
6738  int __pyx_clineno = 0;
6739  __Pyx_RefNannySetupContext("costap", 0);
6740 
6741  /* "WaveTools.pyx":261
6742  * :param l: array length
6743  * :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements"""
6744  * npoints = int(cutoff*l) # <<<<<<<<<<<<<<
6745  * wind = np.ones(l)
6746  * for k in range(l): # (k,np) = (n,N) normally used
6747  */
6748  __pyx_t_1 = PyNumber_Multiply(__pyx_v_cutoff, __pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6749  __Pyx_GOTREF(__pyx_t_1);
6750  __pyx_t_2 = PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6751  __Pyx_GOTREF(__pyx_t_2);
6752  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6753  __pyx_v_npoints = __pyx_t_2;
6754  __pyx_t_2 = 0;
6755 
6756  /* "WaveTools.pyx":262
6757  * :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements"""
6758  * npoints = int(cutoff*l)
6759  * wind = np.ones(l) # <<<<<<<<<<<<<<
6760  * for k in range(l): # (k,np) = (n,N) normally used
6761  * if k < npoints:
6762  */
6763  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6764  __Pyx_GOTREF(__pyx_t_1);
6765  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6766  __Pyx_GOTREF(__pyx_t_3);
6767  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6768  __pyx_t_1 = NULL;
6769  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
6770  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
6771  if (likely(__pyx_t_1)) {
6772  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6773  __Pyx_INCREF(__pyx_t_1);
6774  __Pyx_INCREF(function);
6775  __Pyx_DECREF_SET(__pyx_t_3, function);
6776  }
6777  }
6778  if (!__pyx_t_1) {
6779  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_l); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6780  __Pyx_GOTREF(__pyx_t_2);
6781  } else {
6782  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6783  __Pyx_GOTREF(__pyx_t_4);
6784  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
6785  __Pyx_INCREF(__pyx_v_l);
6786  __Pyx_GIVEREF(__pyx_v_l);
6787  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_l);
6788  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6789  __Pyx_GOTREF(__pyx_t_2);
6790  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6791  }
6792  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6793  __pyx_v_wind = __pyx_t_2;
6794  __pyx_t_2 = 0;
6795 
6796  /* "WaveTools.pyx":263
6797  * npoints = int(cutoff*l)
6798  * wind = np.ones(l)
6799  * for k in range(l): # (k,np) = (n,N) normally used # <<<<<<<<<<<<<<
6800  * if k < npoints:
6801  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6802  */
6803  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6804  __Pyx_GOTREF(__pyx_t_2);
6805  __Pyx_INCREF(__pyx_v_l);
6806  __Pyx_GIVEREF(__pyx_v_l);
6807  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_l);
6808  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6809  __Pyx_GOTREF(__pyx_t_3);
6810  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6811  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
6812  __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
6813  __pyx_t_6 = NULL;
6814  } else {
6815  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6816  __Pyx_GOTREF(__pyx_t_2);
6817  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6818  }
6819  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6820  for (;;) {
6821  if (likely(!__pyx_t_6)) {
6822  if (likely(PyList_CheckExact(__pyx_t_2))) {
6823  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
6824  #if CYTHON_COMPILING_IN_CPYTHON
6825  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6826  #else
6827  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6828  __Pyx_GOTREF(__pyx_t_3);
6829  #endif
6830  } else {
6831  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
6832  #if CYTHON_COMPILING_IN_CPYTHON
6833  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6834  #else
6835  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6836  __Pyx_GOTREF(__pyx_t_3);
6837  #endif
6838  }
6839  } else {
6840  __pyx_t_3 = __pyx_t_6(__pyx_t_2);
6841  if (unlikely(!__pyx_t_3)) {
6842  PyObject* exc_type = PyErr_Occurred();
6843  if (exc_type) {
6844  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
6845  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6846  }
6847  break;
6848  }
6849  __Pyx_GOTREF(__pyx_t_3);
6850  }
6851  __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3);
6852  __pyx_t_3 = 0;
6853 
6854  /* "WaveTools.pyx":264
6855  * wind = np.ones(l)
6856  * for k in range(l): # (k,np) = (n,N) normally used
6857  * if k < npoints: # <<<<<<<<<<<<<<
6858  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6859  * if k > l - npoints -1:
6860  */
6861  __pyx_t_3 = PyObject_RichCompare(__pyx_v_k, __pyx_v_npoints, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6862  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6863  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6864  if (__pyx_t_7) {
6865 
6866  /* "WaveTools.pyx":265
6867  * for k in range(l): # (k,np) = (n,N) normally used
6868  * if k < npoints:
6869  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints))) # <<<<<<<<<<<<<<
6870  * if k > l - npoints -1:
6871  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
6872  */
6873  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6874  __Pyx_GOTREF(__pyx_t_4);
6875  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6876  __Pyx_GOTREF(__pyx_t_1);
6877  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_v_k); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6878  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6879  __Pyx_GOTREF(__pyx_t_9);
6880  __pyx_t_10 = PyNumber_Multiply(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6881  __Pyx_GOTREF(__pyx_t_10);
6882  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6883  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6884  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_v_npoints); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6885  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6886  __Pyx_GOTREF(__pyx_t_9);
6887  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6888  __Pyx_GOTREF(__pyx_t_1);
6889  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6890  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6891  __pyx_t_9 = NULL;
6892  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
6893  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
6894  if (likely(__pyx_t_9)) {
6895  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6896  __Pyx_INCREF(__pyx_t_9);
6897  __Pyx_INCREF(function);
6898  __Pyx_DECREF_SET(__pyx_t_4, function);
6899  }
6900  }
6901  if (!__pyx_t_9) {
6902  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6903  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6904  __Pyx_GOTREF(__pyx_t_3);
6905  } else {
6906  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6907  __Pyx_GOTREF(__pyx_t_10);
6908  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
6909  __Pyx_GIVEREF(__pyx_t_1);
6910  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_1);
6911  __pyx_t_1 = 0;
6912  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6913  __Pyx_GOTREF(__pyx_t_3);
6914  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6915  }
6916  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6917  __pyx_t_4 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6918  __Pyx_GOTREF(__pyx_t_4);
6919  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6920  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6921  __Pyx_GOTREF(__pyx_t_3);
6922  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6923  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_v_k, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6924  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6925 
6926  /* "WaveTools.pyx":264
6927  * wind = np.ones(l)
6928  * for k in range(l): # (k,np) = (n,N) normally used
6929  * if k < npoints: # <<<<<<<<<<<<<<
6930  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6931  * if k > l - npoints -1:
6932  */
6933  }
6934 
6935  /* "WaveTools.pyx":266
6936  * if k < npoints:
6937  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6938  * if k > l - npoints -1: # <<<<<<<<<<<<<<
6939  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
6940  * return wind
6941  */
6942  __pyx_t_3 = PyNumber_Subtract(__pyx_v_l, __pyx_v_npoints); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6943  __Pyx_GOTREF(__pyx_t_3);
6944  __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6945  __Pyx_GOTREF(__pyx_t_4);
6946  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6947  __pyx_t_3 = PyObject_RichCompare(__pyx_v_k, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6948  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6949  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6950  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6951  if (__pyx_t_7) {
6952 
6953  /* "WaveTools.pyx":267
6954  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6955  * if k > l - npoints -1:
6956  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints))) # <<<<<<<<<<<<<<
6957  * return wind
6958  *
6959  */
6960  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6961  __Pyx_GOTREF(__pyx_t_4);
6962  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6963  __Pyx_GOTREF(__pyx_t_10);
6964  __pyx_t_1 = PyNumber_Subtract(__pyx_v_l, __pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6965  __Pyx_GOTREF(__pyx_t_1);
6966  __pyx_t_9 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6967  __Pyx_GOTREF(__pyx_t_9);
6968  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6969  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_t_9); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6970  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6971  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6972  __Pyx_GOTREF(__pyx_t_9);
6973  __pyx_t_1 = PyNumber_Multiply(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6974  __Pyx_GOTREF(__pyx_t_1);
6975  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6976  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6977  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_v_npoints); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6978  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6979  __Pyx_GOTREF(__pyx_t_9);
6980  __pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6981  __Pyx_GOTREF(__pyx_t_10);
6982  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6983  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6984  __pyx_t_9 = NULL;
6985  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
6986  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
6987  if (likely(__pyx_t_9)) {
6988  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6989  __Pyx_INCREF(__pyx_t_9);
6990  __Pyx_INCREF(function);
6991  __Pyx_DECREF_SET(__pyx_t_4, function);
6992  }
6993  }
6994  if (!__pyx_t_9) {
6995  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6996  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6997  __Pyx_GOTREF(__pyx_t_3);
6998  } else {
6999  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7000  __Pyx_GOTREF(__pyx_t_1);
7001  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9); __pyx_t_9 = NULL;
7002  __Pyx_GIVEREF(__pyx_t_10);
7003  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_10);
7004  __pyx_t_10 = 0;
7005  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7006  __Pyx_GOTREF(__pyx_t_3);
7007  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7008  }
7009  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7010  __pyx_t_4 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7011  __Pyx_GOTREF(__pyx_t_4);
7012  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7013  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7014  __Pyx_GOTREF(__pyx_t_3);
7015  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7016  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_v_k, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7017  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7018 
7019  /* "WaveTools.pyx":266
7020  * if k < npoints:
7021  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
7022  * if k > l - npoints -1: # <<<<<<<<<<<<<<
7023  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
7024  * return wind
7025  */
7026  }
7027 
7028  /* "WaveTools.pyx":263
7029  * npoints = int(cutoff*l)
7030  * wind = np.ones(l)
7031  * for k in range(l): # (k,np) = (n,N) normally used # <<<<<<<<<<<<<<
7032  * if k < npoints:
7033  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
7034  */
7035  }
7036  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7037 
7038  /* "WaveTools.pyx":268
7039  * if k > l - npoints -1:
7040  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
7041  * return wind # <<<<<<<<<<<<<<
7042  *
7043  * def decompose_tseries(time,eta,dt):
7044  */
7045  __Pyx_XDECREF(__pyx_r);
7046  __Pyx_INCREF(__pyx_v_wind);
7047  __pyx_r = __pyx_v_wind;
7048  goto __pyx_L0;
7049 
7050  /* "WaveTools.pyx":257
7051  * return a
7052  *
7053  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
7054  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
7055  * :param l: array length
7056  */
7057 
7058  /* function exit code */
7059  __pyx_L1_error:;
7060  __Pyx_XDECREF(__pyx_t_1);
7061  __Pyx_XDECREF(__pyx_t_2);
7062  __Pyx_XDECREF(__pyx_t_3);
7063  __Pyx_XDECREF(__pyx_t_4);
7064  __Pyx_XDECREF(__pyx_t_9);
7065  __Pyx_XDECREF(__pyx_t_10);
7066  __Pyx_AddTraceback("WaveTools.costap", __pyx_clineno, __pyx_lineno, __pyx_filename);
7067  __pyx_r = NULL;
7068  __pyx_L0:;
7069  __Pyx_XDECREF(__pyx_v_npoints);
7070  __Pyx_XDECREF(__pyx_v_wind);
7071  __Pyx_XDECREF(__pyx_v_k);
7072  __Pyx_XGIVEREF(__pyx_r);
7073  __Pyx_RefNannyFinishContext();
7074  return __pyx_r;
7075 }
7076 
7077 /* "WaveTools.pyx":270
7078  * return wind
7079  *
7080  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
7081  * """ This function does a spectral decomposition of a time series with constant sampling.
7082  * It returns a list with results with four entries:
7083  */
7084 
7085 /* Python wrapper */
7086 static PyObject *__pyx_pw_9WaveTools_37decompose_tseries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7087 static char __pyx_doc_9WaveTools_36decompose_tseries[] = "decompose_tseries(time, eta, dt)\n This function does a spectral decomposition of a time series with constant sampling.\n It returns a list with results with four entries:\n 0 -> numpy array with frequency components ww\n 1 -> numpy array with amplitude of each component aa\n 2 -> numpy array with phase of each component pp\n 3 -> float of the 0th fourier mode (wave setup) \n :param time: time array [T]\n :param eta: signal array\n :param dt: sampling frequency [1/T] \n ";
7088 static PyMethodDef __pyx_mdef_9WaveTools_37decompose_tseries = {"decompose_tseries", (PyCFunction)__pyx_pw_9WaveTools_37decompose_tseries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_36decompose_tseries};
7089 static PyObject *__pyx_pw_9WaveTools_37decompose_tseries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7090  PyObject *__pyx_v_time = 0;
7091  PyObject *__pyx_v_eta = 0;
7092  PyObject *__pyx_v_dt = 0;
7093  int __pyx_lineno = 0;
7094  const char *__pyx_filename = NULL;
7095  int __pyx_clineno = 0;
7096  PyObject *__pyx_r = 0;
7097  __Pyx_RefNannyDeclarations
7098  __Pyx_RefNannySetupContext("decompose_tseries (wrapper)", 0);
7099  {
7100  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_time,&__pyx_n_s_eta,&__pyx_n_s_dt,0};
7101  PyObject* values[3] = {0,0,0};
7102  if (unlikely(__pyx_kwds)) {
7103  Py_ssize_t kw_args;
7104  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7105  switch (pos_args) {
7106  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7107  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7108  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7109  case 0: break;
7110  default: goto __pyx_L5_argtuple_error;
7111  }
7112  kw_args = PyDict_Size(__pyx_kwds);
7113  switch (pos_args) {
7114  case 0:
7115  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time)) != 0)) kw_args--;
7116  else goto __pyx_L5_argtuple_error;
7117  case 1:
7118  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_eta)) != 0)) kw_args--;
7119  else {
7120  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7121  }
7122  case 2:
7123  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
7124  else {
7125  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7126  }
7127  }
7128  if (unlikely(kw_args > 0)) {
7129  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "decompose_tseries") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7130  }
7131  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
7132  goto __pyx_L5_argtuple_error;
7133  } else {
7134  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7135  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7136  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7137  }
7138  __pyx_v_time = values[0];
7139  __pyx_v_eta = values[1];
7140  __pyx_v_dt = values[2];
7141  }
7142  goto __pyx_L4_argument_unpacking_done;
7143  __pyx_L5_argtuple_error:;
7144  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7145  __pyx_L3_error:;
7146  __Pyx_AddTraceback("WaveTools.decompose_tseries", __pyx_clineno, __pyx_lineno, __pyx_filename);
7147  __Pyx_RefNannyFinishContext();
7148  return NULL;
7149  __pyx_L4_argument_unpacking_done:;
7150  __pyx_r = __pyx_pf_9WaveTools_36decompose_tseries(__pyx_self, __pyx_v_time, __pyx_v_eta, __pyx_v_dt);
7151 
7152  /* function exit code */
7153  __Pyx_RefNannyFinishContext();
7154  return __pyx_r;
7155 }
7156 
7157 static PyObject *__pyx_pf_9WaveTools_36decompose_tseries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_time, PyObject *__pyx_v_eta, PyObject *__pyx_v_dt) {
7158  PyObject *__pyx_v_nfft = NULL;
7159  PyObject *__pyx_v_results = NULL;
7160  PyObject *__pyx_v_fft_x = NULL;
7161  PyObject *__pyx_v_freq = NULL;
7162  PyObject *__pyx_v_iend = NULL;
7163  PyObject *__pyx_v_setup = NULL;
7164  PyObject *__pyx_v_aa = NULL;
7165  PyObject *__pyx_v_ww = NULL;
7166  PyObject *__pyx_v_pp = NULL;
7167  Py_ssize_t __pyx_v_k;
7168  PyObject *__pyx_r = NULL;
7169  __Pyx_RefNannyDeclarations
7170  Py_ssize_t __pyx_t_1;
7171  PyObject *__pyx_t_2 = NULL;
7172  PyObject *__pyx_t_3 = NULL;
7173  PyObject *__pyx_t_4 = NULL;
7174  PyObject *__pyx_t_5 = NULL;
7175  PyObject *__pyx_t_6 = NULL;
7176  Py_ssize_t __pyx_t_7;
7177  int __pyx_t_8;
7178  int __pyx_lineno = 0;
7179  const char *__pyx_filename = NULL;
7180  int __pyx_clineno = 0;
7181  __Pyx_RefNannySetupContext("decompose_tseries", 0);
7182 
7183  /* "WaveTools.pyx":281
7184  * :param dt: sampling frequency [1/T]
7185  * """
7186  * nfft = len(time) # <<<<<<<<<<<<<<
7187  * results = []
7188  * fft_x = np.fft.fft(eta,nfft)
7189  */
7190  __pyx_t_1 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7191  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7192  __Pyx_GOTREF(__pyx_t_2);
7193  __pyx_v_nfft = __pyx_t_2;
7194  __pyx_t_2 = 0;
7195 
7196  /* "WaveTools.pyx":282
7197  * """
7198  * nfft = len(time)
7199  * results = [] # <<<<<<<<<<<<<<
7200  * fft_x = np.fft.fft(eta,nfft)
7201  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7202  */
7203  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7204  __Pyx_GOTREF(__pyx_t_2);
7205  __pyx_v_results = ((PyObject*)__pyx_t_2);
7206  __pyx_t_2 = 0;
7207 
7208  /* "WaveTools.pyx":283
7209  * nfft = len(time)
7210  * results = []
7211  * fft_x = np.fft.fft(eta,nfft) # <<<<<<<<<<<<<<
7212  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7213  * iend = np.where(freq<0)[0][0]
7214  */
7215  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7216  __Pyx_GOTREF(__pyx_t_3);
7217  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fft); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7218  __Pyx_GOTREF(__pyx_t_4);
7219  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7220  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fft); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7221  __Pyx_GOTREF(__pyx_t_3);
7222  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7223  __pyx_t_4 = NULL;
7224  __pyx_t_1 = 0;
7225  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
7226  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
7227  if (likely(__pyx_t_4)) {
7228  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7229  __Pyx_INCREF(__pyx_t_4);
7230  __Pyx_INCREF(function);
7231  __Pyx_DECREF_SET(__pyx_t_3, function);
7232  __pyx_t_1 = 1;
7233  }
7234  }
7235  __pyx_t_5 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7236  __Pyx_GOTREF(__pyx_t_5);
7237  if (__pyx_t_4) {
7238  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
7239  }
7240  __Pyx_INCREF(__pyx_v_eta);
7241  __Pyx_GIVEREF(__pyx_v_eta);
7242  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_1, __pyx_v_eta);
7243  __Pyx_INCREF(__pyx_v_nfft);
7244  __Pyx_GIVEREF(__pyx_v_nfft);
7245  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_1, __pyx_v_nfft);
7246  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7247  __Pyx_GOTREF(__pyx_t_2);
7248  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7249  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7250  __pyx_v_fft_x = __pyx_t_2;
7251  __pyx_t_2 = 0;
7252 
7253  /* "WaveTools.pyx":284
7254  * results = []
7255  * fft_x = np.fft.fft(eta,nfft)
7256  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum # <<<<<<<<<<<<<<
7257  * iend = np.where(freq<0)[0][0]
7258  * setup = np.real(fft_x[0])/nfft
7259  */
7260  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7261  __Pyx_GOTREF(__pyx_t_3);
7262  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fft); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7263  __Pyx_GOTREF(__pyx_t_5);
7264  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7265  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_fftfreq); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7266  __Pyx_GOTREF(__pyx_t_3);
7267  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7268  __pyx_t_5 = NULL;
7269  __pyx_t_1 = 0;
7270  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
7271  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
7272  if (likely(__pyx_t_5)) {
7273  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7274  __Pyx_INCREF(__pyx_t_5);
7275  __Pyx_INCREF(function);
7276  __Pyx_DECREF_SET(__pyx_t_3, function);
7277  __pyx_t_1 = 1;
7278  }
7279  }
7280  __pyx_t_4 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7281  __Pyx_GOTREF(__pyx_t_4);
7282  if (__pyx_t_5) {
7283  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
7284  }
7285  __Pyx_INCREF(__pyx_v_nfft);
7286  __Pyx_GIVEREF(__pyx_v_nfft);
7287  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_1, __pyx_v_nfft);
7288  __Pyx_INCREF(__pyx_v_dt);
7289  __Pyx_GIVEREF(__pyx_v_dt);
7290  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_1, __pyx_v_dt);
7291  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7292  __Pyx_GOTREF(__pyx_t_2);
7293  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7294  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7295  __pyx_v_freq = __pyx_t_2;
7296  __pyx_t_2 = 0;
7297 
7298  /* "WaveTools.pyx":285
7299  * fft_x = np.fft.fft(eta,nfft)
7300  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7301  * iend = np.where(freq<0)[0][0] # <<<<<<<<<<<<<<
7302  * setup = np.real(fft_x[0])/nfft
7303  * fft_x = fft_x[1:iend]
7304  */
7305  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7306  __Pyx_GOTREF(__pyx_t_3);
7307  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_where); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7308  __Pyx_GOTREF(__pyx_t_4);
7309  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7310  __pyx_t_3 = PyObject_RichCompare(__pyx_v_freq, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7311  __pyx_t_5 = NULL;
7312  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
7313  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
7314  if (likely(__pyx_t_5)) {
7315  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
7316  __Pyx_INCREF(__pyx_t_5);
7317  __Pyx_INCREF(function);
7318  __Pyx_DECREF_SET(__pyx_t_4, function);
7319  }
7320  }
7321  if (!__pyx_t_5) {
7322  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7323  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7324  __Pyx_GOTREF(__pyx_t_2);
7325  } else {
7326  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7327  __Pyx_GOTREF(__pyx_t_6);
7328  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
7329  __Pyx_GIVEREF(__pyx_t_3);
7330  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
7331  __pyx_t_3 = 0;
7332  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7333  __Pyx_GOTREF(__pyx_t_2);
7334  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7335  }
7336  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7337  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7338  __Pyx_GOTREF(__pyx_t_4);
7339  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7340  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7341  __Pyx_GOTREF(__pyx_t_2);
7342  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7343  __pyx_v_iend = __pyx_t_2;
7344  __pyx_t_2 = 0;
7345 
7346  /* "WaveTools.pyx":286
7347  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7348  * iend = np.where(freq<0)[0][0]
7349  * setup = np.real(fft_x[0])/nfft # <<<<<<<<<<<<<<
7350  * fft_x = fft_x[1:iend]
7351  * freq = freq[1:iend]
7352  */
7353  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7354  __Pyx_GOTREF(__pyx_t_4);
7355  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_real); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7356  __Pyx_GOTREF(__pyx_t_6);
7357  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7358  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_fft_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7359  __Pyx_GOTREF(__pyx_t_4);
7360  __pyx_t_3 = NULL;
7361  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
7362  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
7363  if (likely(__pyx_t_3)) {
7364  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
7365  __Pyx_INCREF(__pyx_t_3);
7366  __Pyx_INCREF(function);
7367  __Pyx_DECREF_SET(__pyx_t_6, function);
7368  }
7369  }
7370  if (!__pyx_t_3) {
7371  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7372  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7373  __Pyx_GOTREF(__pyx_t_2);
7374  } else {
7375  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7376  __Pyx_GOTREF(__pyx_t_5);
7377  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
7378  __Pyx_GIVEREF(__pyx_t_4);
7379  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
7380  __pyx_t_4 = 0;
7381  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7382  __Pyx_GOTREF(__pyx_t_2);
7383  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7384  }
7385  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7386  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_v_nfft); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7387  __Pyx_GOTREF(__pyx_t_6);
7388  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7389  __pyx_v_setup = __pyx_t_6;
7390  __pyx_t_6 = 0;
7391 
7392  /* "WaveTools.pyx":287
7393  * iend = np.where(freq<0)[0][0]
7394  * setup = np.real(fft_x[0])/nfft
7395  * fft_x = fft_x[1:iend] # <<<<<<<<<<<<<<
7396  * freq = freq[1:iend]
7397  * #%retaining only first half of the spectrum
7398  */
7399  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_fft_x, 1, 0, NULL, &__pyx_v_iend, NULL, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7400  __Pyx_GOTREF(__pyx_t_6);
7401  __Pyx_DECREF_SET(__pyx_v_fft_x, __pyx_t_6);
7402  __pyx_t_6 = 0;
7403 
7404  /* "WaveTools.pyx":288
7405  * setup = np.real(fft_x[0])/nfft
7406  * fft_x = fft_x[1:iend]
7407  * freq = freq[1:iend] # <<<<<<<<<<<<<<
7408  * #%retaining only first half of the spectrum
7409  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies)
7410  */
7411  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_freq, 1, 0, NULL, &__pyx_v_iend, NULL, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7412  __Pyx_GOTREF(__pyx_t_6);
7413  __Pyx_DECREF_SET(__pyx_v_freq, __pyx_t_6);
7414  __pyx_t_6 = 0;
7415 
7416  /* "WaveTools.pyx":290
7417  * freq = freq[1:iend]
7418  * #%retaining only first half of the spectrum
7419  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies) # <<<<<<<<<<<<<<
7420  * ww = 2*pi*freq
7421  *
7422  */
7423  __pyx_t_6 = PyNumber_Absolute(__pyx_v_fft_x); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7424  __Pyx_GOTREF(__pyx_t_6);
7425  __pyx_t_2 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7426  __Pyx_GOTREF(__pyx_t_2);
7427  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7428  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_v_nfft); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7429  __Pyx_GOTREF(__pyx_t_6);
7430  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7431  __pyx_v_aa = __pyx_t_6;
7432  __pyx_t_6 = 0;
7433 
7434  /* "WaveTools.pyx":291
7435  * #%retaining only first half of the spectrum
7436  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies)
7437  * ww = 2*pi*freq # <<<<<<<<<<<<<<
7438  *
7439  *
7440  */
7441  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7442  __Pyx_GOTREF(__pyx_t_6);
7443  __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7444  __Pyx_GOTREF(__pyx_t_2);
7445  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7446  __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_v_freq); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7447  __Pyx_GOTREF(__pyx_t_6);
7448  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7449  __pyx_v_ww = __pyx_t_6;
7450  __pyx_t_6 = 0;
7451 
7452  /* "WaveTools.pyx":294
7453  *
7454  *
7455  * pp = np.zeros(len(aa),complex) # <<<<<<<<<<<<<<
7456  * for k in range(len(aa)):
7457  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7458  */
7459  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7460  __Pyx_GOTREF(__pyx_t_2);
7461  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7462  __Pyx_GOTREF(__pyx_t_5);
7463  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7464  __pyx_t_1 = PyObject_Length(__pyx_v_aa); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7465  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7466  __Pyx_GOTREF(__pyx_t_2);
7467  __pyx_t_4 = NULL;
7468  __pyx_t_1 = 0;
7469  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
7470  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
7471  if (likely(__pyx_t_4)) {
7472  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
7473  __Pyx_INCREF(__pyx_t_4);
7474  __Pyx_INCREF(function);
7475  __Pyx_DECREF_SET(__pyx_t_5, function);
7476  __pyx_t_1 = 1;
7477  }
7478  }
7479  __pyx_t_3 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7480  __Pyx_GOTREF(__pyx_t_3);
7481  if (__pyx_t_4) {
7482  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
7483  }
7484  __Pyx_GIVEREF(__pyx_t_2);
7485  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_1, __pyx_t_2);
7486  __Pyx_INCREF(((PyObject *)(&PyComplex_Type)));
7487  __Pyx_GIVEREF(((PyObject *)(&PyComplex_Type)));
7488  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_1, ((PyObject *)(&PyComplex_Type)));
7489  __pyx_t_2 = 0;
7490  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7491  __Pyx_GOTREF(__pyx_t_6);
7492  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7493  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7494  __pyx_v_pp = __pyx_t_6;
7495  __pyx_t_6 = 0;
7496 
7497  /* "WaveTools.pyx":295
7498  *
7499  * pp = np.zeros(len(aa),complex)
7500  * for k in range(len(aa)): # <<<<<<<<<<<<<<
7501  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7502  * pp = np.real(pp) # Append results to list
7503  */
7504  __pyx_t_1 = PyObject_Length(__pyx_v_aa); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7505  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
7506  __pyx_v_k = __pyx_t_7;
7507 
7508  /* "WaveTools.pyx":296
7509  * pp = np.zeros(len(aa),complex)
7510  * for k in range(len(aa)):
7511  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases # <<<<<<<<<<<<<<
7512  * pp = np.real(pp) # Append results to list
7513  * results.append(ww)
7514  */
7515  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cmath); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7516  __Pyx_GOTREF(__pyx_t_5);
7517  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_phase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7518  __Pyx_GOTREF(__pyx_t_3);
7519  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7520  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_fft_x, __pyx_v_k, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7521  __Pyx_GOTREF(__pyx_t_5);
7522  __pyx_t_2 = NULL;
7523  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
7524  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
7525  if (likely(__pyx_t_2)) {
7526  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7527  __Pyx_INCREF(__pyx_t_2);
7528  __Pyx_INCREF(function);
7529  __Pyx_DECREF_SET(__pyx_t_3, function);
7530  }
7531  }
7532  if (!__pyx_t_2) {
7533  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7534  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7535  __Pyx_GOTREF(__pyx_t_6);
7536  } else {
7537  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7538  __Pyx_GOTREF(__pyx_t_4);
7539  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
7540  __Pyx_GIVEREF(__pyx_t_5);
7541  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
7542  __pyx_t_5 = 0;
7543  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7544  __Pyx_GOTREF(__pyx_t_6);
7545  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7546  }
7547  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7548  if (unlikely(__Pyx_SetItemInt(__pyx_v_pp, __pyx_v_k, __pyx_t_6, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7549  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7550  }
7551 
7552  /* "WaveTools.pyx":297
7553  * for k in range(len(aa)):
7554  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7555  * pp = np.real(pp) # Append results to list # <<<<<<<<<<<<<<
7556  * results.append(ww)
7557  * results.append(aa)
7558  */
7559  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7560  __Pyx_GOTREF(__pyx_t_3);
7561  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_real); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7562  __Pyx_GOTREF(__pyx_t_4);
7563  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7564  __pyx_t_3 = NULL;
7565  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
7566  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
7567  if (likely(__pyx_t_3)) {
7568  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
7569  __Pyx_INCREF(__pyx_t_3);
7570  __Pyx_INCREF(function);
7571  __Pyx_DECREF_SET(__pyx_t_4, function);
7572  }
7573  }
7574  if (!__pyx_t_3) {
7575  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_pp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7576  __Pyx_GOTREF(__pyx_t_6);
7577  } else {
7578  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7579  __Pyx_GOTREF(__pyx_t_5);
7580  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
7581  __Pyx_INCREF(__pyx_v_pp);
7582  __Pyx_GIVEREF(__pyx_v_pp);
7583  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_pp);
7584  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7585  __Pyx_GOTREF(__pyx_t_6);
7586  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7587  }
7588  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7589  __Pyx_DECREF_SET(__pyx_v_pp, __pyx_t_6);
7590  __pyx_t_6 = 0;
7591 
7592  /* "WaveTools.pyx":298
7593  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7594  * pp = np.real(pp) # Append results to list
7595  * results.append(ww) # <<<<<<<<<<<<<<
7596  * results.append(aa)
7597  * results.append(pp)
7598  */
7599  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_ww); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7600 
7601  /* "WaveTools.pyx":299
7602  * pp = np.real(pp) # Append results to list
7603  * results.append(ww)
7604  * results.append(aa) # <<<<<<<<<<<<<<
7605  * results.append(pp)
7606  * results.append(setup)
7607  */
7608  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_aa); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7609 
7610  /* "WaveTools.pyx":300
7611  * results.append(ww)
7612  * results.append(aa)
7613  * results.append(pp) # <<<<<<<<<<<<<<
7614  * results.append(setup)
7615  * return results
7616  */
7617  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_pp); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7618 
7619  /* "WaveTools.pyx":301
7620  * results.append(aa)
7621  * results.append(pp)
7622  * results.append(setup) # <<<<<<<<<<<<<<
7623  * return results
7624  *
7625  */
7626  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_setup); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7627 
7628  /* "WaveTools.pyx":302
7629  * results.append(pp)
7630  * results.append(setup)
7631  * return results # <<<<<<<<<<<<<<
7632  *
7633  *
7634  */
7635  __Pyx_XDECREF(__pyx_r);
7636  __Pyx_INCREF(__pyx_v_results);
7637  __pyx_r = __pyx_v_results;
7638  goto __pyx_L0;
7639 
7640  /* "WaveTools.pyx":270
7641  * return wind
7642  *
7643  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
7644  * """ This function does a spectral decomposition of a time series with constant sampling.
7645  * It returns a list with results with four entries:
7646  */
7647 
7648  /* function exit code */
7649  __pyx_L1_error:;
7650  __Pyx_XDECREF(__pyx_t_2);
7651  __Pyx_XDECREF(__pyx_t_3);
7652  __Pyx_XDECREF(__pyx_t_4);
7653  __Pyx_XDECREF(__pyx_t_5);
7654  __Pyx_XDECREF(__pyx_t_6);
7655  __Pyx_AddTraceback("WaveTools.decompose_tseries", __pyx_clineno, __pyx_lineno, __pyx_filename);
7656  __pyx_r = NULL;
7657  __pyx_L0:;
7658  __Pyx_XDECREF(__pyx_v_nfft);
7659  __Pyx_XDECREF(__pyx_v_results);
7660  __Pyx_XDECREF(__pyx_v_fft_x);
7661  __Pyx_XDECREF(__pyx_v_freq);
7662  __Pyx_XDECREF(__pyx_v_iend);
7663  __Pyx_XDECREF(__pyx_v_setup);
7664  __Pyx_XDECREF(__pyx_v_aa);
7665  __Pyx_XDECREF(__pyx_v_ww);
7666  __Pyx_XDECREF(__pyx_v_pp);
7667  __Pyx_XGIVEREF(__pyx_r);
7668  __Pyx_RefNannyFinishContext();
7669  return __pyx_r;
7670 }
7671 
7672 /* "WaveTools.pyx":324
7673  * :phi0: Phase of the wave
7674  * """
7675  * def __init__(self, # <<<<<<<<<<<<<<
7676  * period,
7677  * waveHeight,
7678  */
7679 
7680 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_6__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
7681  PyObject *__pyx_r = NULL;
7682  __Pyx_RefNannyDeclarations
7683  PyObject *__pyx_t_1 = NULL;
7684  PyObject *__pyx_t_2 = NULL;
7685  int __pyx_lineno = 0;
7686  const char *__pyx_filename = NULL;
7687  int __pyx_clineno = 0;
7688  __Pyx_RefNannySetupContext("__defaults__", 0);
7689  __Pyx_XDECREF(__pyx_r);
7690 
7691  /* "WaveTools.pyx":334
7692  * waveType="Linear",
7693  * Ycoeff = None,
7694  * Bcoeff =None, meanVelocity = np.array([0.,0,0.]), # <<<<<<<<<<<<<<
7695  * phi0 = 0.):
7696  *
7697  */
7698  __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7699  __Pyx_GOTREF(__pyx_t_1);
7700  __Pyx_INCREF(((PyObject *)Py_None));
7701  __Pyx_GIVEREF(((PyObject *)Py_None));
7702  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_None));
7703  __Pyx_INCREF(((PyObject*)__pyx_n_s_Linear));
7704  __Pyx_GIVEREF(((PyObject*)__pyx_n_s_Linear));
7705  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject*)__pyx_n_s_Linear));
7706  __Pyx_INCREF(((PyObject *)Py_None));
7707  __Pyx_GIVEREF(((PyObject *)Py_None));
7708  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)Py_None));
7709  __Pyx_INCREF(((PyObject *)Py_None));
7710  __Pyx_GIVEREF(((PyObject *)Py_None));
7711  PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)Py_None));
7712  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_meanVelocity);
7713  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_meanVelocity);
7714  PyTuple_SET_ITEM(__pyx_t_1, 4, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_meanVelocity);
7715  __Pyx_INCREF(((PyObject*)__pyx_float_0_));
7716  __Pyx_GIVEREF(((PyObject*)__pyx_float_0_));
7717  PyTuple_SET_ITEM(__pyx_t_1, 5, ((PyObject*)__pyx_float_0_));
7718 
7719  /* "WaveTools.pyx":324
7720  * :phi0: Phase of the wave
7721  * """
7722  * def __init__(self, # <<<<<<<<<<<<<<
7723  * period,
7724  * waveHeight,
7725  */
7726  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7727  __Pyx_GOTREF(__pyx_t_2);
7728  __Pyx_GIVEREF(__pyx_t_1);
7729  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
7730  __Pyx_INCREF(Py_None);
7731  __Pyx_GIVEREF(Py_None);
7732  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
7733  __pyx_t_1 = 0;
7734  __pyx_r = __pyx_t_2;
7735  __pyx_t_2 = 0;
7736  goto __pyx_L0;
7737 
7738  /* function exit code */
7739  __pyx_L1_error:;
7740  __Pyx_XDECREF(__pyx_t_1);
7741  __Pyx_XDECREF(__pyx_t_2);
7742  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7743  __pyx_r = NULL;
7744  __pyx_L0:;
7745  __Pyx_XGIVEREF(__pyx_r);
7746  __Pyx_RefNannyFinishContext();
7747  return __pyx_r;
7748 }
7749 
7750 /* Python wrapper */
7751 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7752 static char __pyx_doc_9WaveTools_18MonochromaticWaves___init__[] = "MonochromaticWaves.__init__(self, period, waveHeight, mwl, depth, g, waveDir, wavelength=None, waveType='Linear', Ycoeff=None, Bcoeff=None, meanVelocity=<\077\077?>, phi0=0.0)";
7753 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves___init__};
7754 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7755  PyObject *__pyx_v_self = 0;
7756  PyObject *__pyx_v_period = 0;
7757  PyObject *__pyx_v_waveHeight = 0;
7758  PyObject *__pyx_v_mwl = 0;
7759  PyObject *__pyx_v_depth = 0;
7760  PyObject *__pyx_v_g = 0;
7761  PyObject *__pyx_v_waveDir = 0;
7762  PyObject *__pyx_v_wavelength = 0;
7763  PyObject *__pyx_v_waveType = 0;
7764  PyObject *__pyx_v_Ycoeff = 0;
7765  PyObject *__pyx_v_Bcoeff = 0;
7766  PyObject *__pyx_v_meanVelocity = 0;
7767  PyObject *__pyx_v_phi0 = 0;
7768  int __pyx_lineno = 0;
7769  const char *__pyx_filename = NULL;
7770  int __pyx_clineno = 0;
7771  PyObject *__pyx_r = 0;
7772  __Pyx_RefNannyDeclarations
7773  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
7774  {
7775  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_period,&__pyx_n_s_waveHeight,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_g,&__pyx_n_s_waveDir,&__pyx_n_s_wavelength,&__pyx_n_s_waveType,&__pyx_n_s_Ycoeff,&__pyx_n_s_Bcoeff,&__pyx_n_s_meanVelocity,&__pyx_n_s_phi0,0};
7776  PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
7777  __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
7778  values[7] = ((PyObject *)((PyObject *)Py_None));
7779  values[8] = ((PyObject *)((PyObject*)__pyx_n_s_Linear));
7780  values[9] = ((PyObject *)((PyObject *)Py_None));
7781  values[10] = ((PyObject *)((PyObject *)Py_None));
7782  values[11] = __pyx_dynamic_args->__pyx_arg_meanVelocity;
7783  values[12] = ((PyObject *)((PyObject*)__pyx_float_0_));
7784  if (unlikely(__pyx_kwds)) {
7785  Py_ssize_t kw_args;
7786  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7787  switch (pos_args) {
7788  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
7789  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
7790  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
7791  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
7792  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
7793  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
7794  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
7795  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
7796  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7797  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7798  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7799  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7800  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7801  case 0: break;
7802  default: goto __pyx_L5_argtuple_error;
7803  }
7804  kw_args = PyDict_Size(__pyx_kwds);
7805  switch (pos_args) {
7806  case 0:
7807  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
7808  else goto __pyx_L5_argtuple_error;
7809  case 1:
7810  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_period)) != 0)) kw_args--;
7811  else {
7812  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7813  }
7814  case 2:
7815  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveHeight)) != 0)) kw_args--;
7816  else {
7817  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7818  }
7819  case 3:
7820  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
7821  else {
7822  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7823  }
7824  case 4:
7825  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
7826  else {
7827  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7828  }
7829  case 5:
7830  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
7831  else {
7832  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7833  }
7834  case 6:
7835  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
7836  else {
7837  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7838  }
7839  case 7:
7840  if (kw_args > 0) {
7841  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_wavelength);
7842  if (value) { values[7] = value; kw_args--; }
7843  }
7844  case 8:
7845  if (kw_args > 0) {
7846  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveType);
7847  if (value) { values[8] = value; kw_args--; }
7848  }
7849  case 9:
7850  if (kw_args > 0) {
7851  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Ycoeff);
7852  if (value) { values[9] = value; kw_args--; }
7853  }
7854  case 10:
7855  if (kw_args > 0) {
7856  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Bcoeff);
7857  if (value) { values[10] = value; kw_args--; }
7858  }
7859  case 11:
7860  if (kw_args > 0) {
7861  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_meanVelocity);
7862  if (value) { values[11] = value; kw_args--; }
7863  }
7864  case 12:
7865  if (kw_args > 0) {
7866  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi0);
7867  if (value) { values[12] = value; kw_args--; }
7868  }
7869  }
7870  if (unlikely(kw_args > 0)) {
7871  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7872  }
7873  } else {
7874  switch (PyTuple_GET_SIZE(__pyx_args)) {
7875  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
7876  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
7877  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
7878  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
7879  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
7880  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
7881  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
7882  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
7883  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7884  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7885  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7886  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7887  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7888  break;
7889  default: goto __pyx_L5_argtuple_error;
7890  }
7891  }
7892  __pyx_v_self = values[0];
7893  __pyx_v_period = values[1];
7894  __pyx_v_waveHeight = values[2];
7895  __pyx_v_mwl = values[3];
7896  __pyx_v_depth = values[4];
7897  __pyx_v_g = values[5];
7898  __pyx_v_waveDir = values[6];
7899  __pyx_v_wavelength = values[7];
7900  __pyx_v_waveType = values[8];
7901  __pyx_v_Ycoeff = values[9];
7902  __pyx_v_Bcoeff = values[10];
7903  __pyx_v_meanVelocity = values[11];
7904  __pyx_v_phi0 = values[12];
7905  }
7906  goto __pyx_L4_argument_unpacking_done;
7907  __pyx_L5_argtuple_error:;
7908  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7909  __pyx_L3_error:;
7910  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7911  __Pyx_RefNannyFinishContext();
7912  return NULL;
7913  __pyx_L4_argument_unpacking_done:;
7914  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_period, __pyx_v_waveHeight, __pyx_v_mwl, __pyx_v_depth, __pyx_v_g, __pyx_v_waveDir, __pyx_v_wavelength, __pyx_v_waveType, __pyx_v_Ycoeff, __pyx_v_Bcoeff, __pyx_v_meanVelocity, __pyx_v_phi0);
7915 
7916  /* function exit code */
7917  __Pyx_RefNannyFinishContext();
7918  return __pyx_r;
7919 }
7920 
7921 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_period, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_wavelength, PyObject *__pyx_v_waveType, PyObject *__pyx_v_Ycoeff, PyObject *__pyx_v_Bcoeff, PyObject *__pyx_v_meanVelocity, PyObject *__pyx_v_phi0) {
7922  PyObject *__pyx_r = NULL;
7923  __Pyx_RefNannyDeclarations
7924  PyObject *__pyx_t_1 = NULL;
7925  PyObject *__pyx_t_2 = NULL;
7926  int __pyx_t_3;
7927  int __pyx_t_4;
7928  PyObject *__pyx_t_5 = NULL;
7929  PyObject *__pyx_t_6 = NULL;
7930  PyObject *__pyx_t_7 = NULL;
7931  PyObject *__pyx_t_8 = NULL;
7932  Py_ssize_t __pyx_t_9;
7933  PyObject *__pyx_t_10 = NULL;
7934  PyObject *__pyx_t_11 = NULL;
7935  PyObject *__pyx_t_12 = NULL;
7936  int __pyx_t_13;
7937  int __pyx_lineno = 0;
7938  const char *__pyx_filename = NULL;
7939  int __pyx_clineno = 0;
7940  __Pyx_RefNannySetupContext("__init__", 0);
7941 
7942  /* "WaveTools.pyx":337
7943  * phi0 = 0.):
7944  *
7945  * self.knownWaveTypes = ["Linear","Fenton"] # <<<<<<<<<<<<<<
7946  * self.waveType = waveType
7947  * if self.waveType not in self.knownWaveTypes:
7948  */
7949  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7950  __Pyx_GOTREF(__pyx_t_1);
7951  __Pyx_INCREF(__pyx_n_s_Linear);
7952  __Pyx_GIVEREF(__pyx_n_s_Linear);
7953  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Linear);
7954  __Pyx_INCREF(__pyx_n_s_Fenton);
7955  __Pyx_GIVEREF(__pyx_n_s_Fenton);
7956  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Fenton);
7957  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_knownWaveTypes, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7958  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7959 
7960  /* "WaveTools.pyx":338
7961  *
7962  * self.knownWaveTypes = ["Linear","Fenton"]
7963  * self.waveType = waveType # <<<<<<<<<<<<<<
7964  * if self.waveType not in self.knownWaveTypes:
7965  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
7966  */
7967  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveType, __pyx_v_waveType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7968 
7969  /* "WaveTools.pyx":339
7970  * self.knownWaveTypes = ["Linear","Fenton"]
7971  * self.waveType = waveType
7972  * if self.waveType not in self.knownWaveTypes: # <<<<<<<<<<<<<<
7973  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
7974  * sys.exit(1)
7975  */
7976  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7977  __Pyx_GOTREF(__pyx_t_1);
7978  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_knownWaveTypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7979  __Pyx_GOTREF(__pyx_t_2);
7980  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7981  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7982  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7983  __pyx_t_4 = (__pyx_t_3 != 0);
7984  if (__pyx_t_4) {
7985 
7986  /* "WaveTools.pyx":340
7987  * self.waveType = waveType
7988  * if self.waveType not in self.knownWaveTypes:
7989  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0) # <<<<<<<<<<<<<<
7990  * sys.exit(1)
7991  * self.g = np.array(g)
7992  */
7993  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7994  __Pyx_GOTREF(__pyx_t_2);
7995  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_knownWaveTypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7996  __Pyx_GOTREF(__pyx_t_1);
7997  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Wrong_wavetype_given_Valid_wavet, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7998  __Pyx_GOTREF(__pyx_t_5);
7999  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8000  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8001  __Pyx_GOTREF(__pyx_t_1);
8002  __Pyx_GIVEREF(__pyx_t_5);
8003  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
8004  __pyx_t_5 = 0;
8005  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8006  __Pyx_GOTREF(__pyx_t_5);
8007  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8008  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8009  __Pyx_GOTREF(__pyx_t_6);
8010  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8011  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8012  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8013  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8014 
8015  /* "WaveTools.pyx":341
8016  * if self.waveType not in self.knownWaveTypes:
8017  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
8018  * sys.exit(1) # <<<<<<<<<<<<<<
8019  * self.g = np.array(g)
8020  * self.waveDir = setDirVector(np.array(waveDir))
8021  */
8022  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8023  __Pyx_GOTREF(__pyx_t_6);
8024  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8025  __Pyx_GOTREF(__pyx_t_5);
8026  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8027  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8028  __Pyx_GOTREF(__pyx_t_6);
8029  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8030  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8031 
8032  /* "WaveTools.pyx":339
8033  * self.knownWaveTypes = ["Linear","Fenton"]
8034  * self.waveType = waveType
8035  * if self.waveType not in self.knownWaveTypes: # <<<<<<<<<<<<<<
8036  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
8037  * sys.exit(1)
8038  */
8039  }
8040 
8041  /* "WaveTools.pyx":342
8042  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
8043  * sys.exit(1)
8044  * self.g = np.array(g) # <<<<<<<<<<<<<<
8045  * self.waveDir = setDirVector(np.array(waveDir))
8046  * self.vDir = setVertDir(g)
8047  */
8048  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8049  __Pyx_GOTREF(__pyx_t_5);
8050  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8051  __Pyx_GOTREF(__pyx_t_1);
8052  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8053  __pyx_t_5 = NULL;
8054  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8055  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
8056  if (likely(__pyx_t_5)) {
8057  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8058  __Pyx_INCREF(__pyx_t_5);
8059  __Pyx_INCREF(function);
8060  __Pyx_DECREF_SET(__pyx_t_1, function);
8061  }
8062  }
8063  if (!__pyx_t_5) {
8064  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_g); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8065  __Pyx_GOTREF(__pyx_t_6);
8066  } else {
8067  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8068  __Pyx_GOTREF(__pyx_t_2);
8069  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
8070  __Pyx_INCREF(__pyx_v_g);
8071  __Pyx_GIVEREF(__pyx_v_g);
8072  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_g);
8073  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8074  __Pyx_GOTREF(__pyx_t_6);
8075  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8076  }
8077  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8078  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_g, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8079  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8080 
8081  /* "WaveTools.pyx":343
8082  * sys.exit(1)
8083  * self.g = np.array(g)
8084  * self.waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
8085  * self.vDir = setVertDir(g)
8086  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
8087  */
8088  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8089  __Pyx_GOTREF(__pyx_t_1);
8090  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8091  __Pyx_GOTREF(__pyx_t_5);
8092  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8093  __Pyx_GOTREF(__pyx_t_7);
8094  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8095  __pyx_t_5 = NULL;
8096  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
8097  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
8098  if (likely(__pyx_t_5)) {
8099  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
8100  __Pyx_INCREF(__pyx_t_5);
8101  __Pyx_INCREF(function);
8102  __Pyx_DECREF_SET(__pyx_t_7, function);
8103  }
8104  }
8105  if (!__pyx_t_5) {
8106  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_waveDir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8107  __Pyx_GOTREF(__pyx_t_2);
8108  } else {
8109  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8110  __Pyx_GOTREF(__pyx_t_8);
8111  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
8112  __Pyx_INCREF(__pyx_v_waveDir);
8113  __Pyx_GIVEREF(__pyx_v_waveDir);
8114  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_waveDir);
8115  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8116  __Pyx_GOTREF(__pyx_t_2);
8117  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8118  }
8119  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8120  __pyx_t_7 = NULL;
8121  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8122  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
8123  if (likely(__pyx_t_7)) {
8124  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8125  __Pyx_INCREF(__pyx_t_7);
8126  __Pyx_INCREF(function);
8127  __Pyx_DECREF_SET(__pyx_t_1, function);
8128  }
8129  }
8130  if (!__pyx_t_7) {
8131  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8132  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8133  __Pyx_GOTREF(__pyx_t_6);
8134  } else {
8135  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8136  __Pyx_GOTREF(__pyx_t_8);
8137  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
8138  __Pyx_GIVEREF(__pyx_t_2);
8139  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2);
8140  __pyx_t_2 = 0;
8141  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8142  __Pyx_GOTREF(__pyx_t_6);
8143  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8144  }
8145  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8146  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8147  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8148 
8149  /* "WaveTools.pyx":344
8150  * self.g = np.array(g)
8151  * self.waveDir = setDirVector(np.array(waveDir))
8152  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
8153  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
8154  *
8155  */
8156  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8157  __Pyx_GOTREF(__pyx_t_1);
8158  __pyx_t_8 = NULL;
8159  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8160  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
8161  if (likely(__pyx_t_8)) {
8162  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8163  __Pyx_INCREF(__pyx_t_8);
8164  __Pyx_INCREF(function);
8165  __Pyx_DECREF_SET(__pyx_t_1, function);
8166  }
8167  }
8168  if (!__pyx_t_8) {
8169  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_g); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8170  __Pyx_GOTREF(__pyx_t_6);
8171  } else {
8172  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8173  __Pyx_GOTREF(__pyx_t_2);
8174  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
8175  __Pyx_INCREF(__pyx_v_g);
8176  __Pyx_GIVEREF(__pyx_v_g);
8177  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_g);
8178  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8179  __Pyx_GOTREF(__pyx_t_6);
8180  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8181  }
8182  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8183  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8184  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8185 
8186  /* "WaveTools.pyx":345
8187  * self.waveDir = setDirVector(np.array(waveDir))
8188  * self.vDir = setVertDir(g)
8189  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
8190  *
8191  * #Checking if g and waveDir are perpendicular
8192  */
8193  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8194  __Pyx_GOTREF(__pyx_t_1);
8195  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8196  __Pyx_GOTREF(__pyx_t_2);
8197  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8198  __Pyx_GOTREF(__pyx_t_8);
8199  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8200  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8201  __Pyx_GOTREF(__pyx_t_2);
8202  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8203  __Pyx_GOTREF(__pyx_t_7);
8204  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8205  __pyx_t_2 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8206  __Pyx_GOTREF(__pyx_t_2);
8207  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8208  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8209  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8210  __Pyx_GOTREF(__pyx_t_7);
8211  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8212  __Pyx_GOTREF(__pyx_t_8);
8213  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8214  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8215  __Pyx_GOTREF(__pyx_t_7);
8216  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8217  __Pyx_GOTREF(__pyx_t_5);
8218  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8219  __pyx_t_7 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8220  __Pyx_GOTREF(__pyx_t_7);
8221  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8222  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8223  __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8224  __Pyx_GOTREF(__pyx_t_5);
8225  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8226  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8227  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8228  __Pyx_GOTREF(__pyx_t_7);
8229  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8230  __Pyx_GOTREF(__pyx_t_2);
8231  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8232  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8233  __Pyx_GOTREF(__pyx_t_7);
8234  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8235  __Pyx_GOTREF(__pyx_t_8);
8236  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8237  __pyx_t_7 = PyNumber_Multiply(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8238  __Pyx_GOTREF(__pyx_t_7);
8239  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8240  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8241  __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8242  __Pyx_GOTREF(__pyx_t_8);
8243  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8244  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8245  __pyx_t_7 = NULL;
8246  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8247  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
8248  if (likely(__pyx_t_7)) {
8249  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8250  __Pyx_INCREF(__pyx_t_7);
8251  __Pyx_INCREF(function);
8252  __Pyx_DECREF_SET(__pyx_t_1, function);
8253  }
8254  }
8255  if (!__pyx_t_7) {
8256  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8257  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8258  __Pyx_GOTREF(__pyx_t_6);
8259  } else {
8260  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8261  __Pyx_GOTREF(__pyx_t_5);
8262  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
8263  __Pyx_GIVEREF(__pyx_t_8);
8264  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_8);
8265  __pyx_t_8 = 0;
8266  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8267  __Pyx_GOTREF(__pyx_t_6);
8268  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8269  }
8270  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8271  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gAbs, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8272  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8273 
8274  /* "WaveTools.pyx":348
8275  *
8276  * #Checking if g and waveDir are perpendicular
8277  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
8278  * self.phi0=phi0
8279  * self.period = period
8280  */
8281  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_dirCheck); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8282  __Pyx_GOTREF(__pyx_t_1);
8283  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8284  __Pyx_GOTREF(__pyx_t_5);
8285  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8286  __Pyx_GOTREF(__pyx_t_8);
8287  __pyx_t_7 = NULL;
8288  __pyx_t_9 = 0;
8289  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8290  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
8291  if (likely(__pyx_t_7)) {
8292  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8293  __Pyx_INCREF(__pyx_t_7);
8294  __Pyx_INCREF(function);
8295  __Pyx_DECREF_SET(__pyx_t_1, function);
8296  __pyx_t_9 = 1;
8297  }
8298  }
8299  __pyx_t_2 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8300  __Pyx_GOTREF(__pyx_t_2);
8301  if (__pyx_t_7) {
8302  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __pyx_t_7 = NULL;
8303  }
8304  __Pyx_GIVEREF(__pyx_t_5);
8305  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_t_5);
8306  __Pyx_GIVEREF(__pyx_t_8);
8307  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_8);
8308  __pyx_t_5 = 0;
8309  __pyx_t_8 = 0;
8310  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8311  __Pyx_GOTREF(__pyx_t_6);
8312  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8313  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8314  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8315 
8316  /* "WaveTools.pyx":349
8317  * #Checking if g and waveDir are perpendicular
8318  * dirCheck(self.waveDir,self.vDir)
8319  * self.phi0=phi0 # <<<<<<<<<<<<<<
8320  * self.period = period
8321  * self.waveHeight = waveHeight
8322  */
8323  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi0, __pyx_v_phi0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8324 
8325  /* "WaveTools.pyx":350
8326  * dirCheck(self.waveDir,self.vDir)
8327  * self.phi0=phi0
8328  * self.period = period # <<<<<<<<<<<<<<
8329  * self.waveHeight = waveHeight
8330  * self.mwl = mwl
8331  */
8332  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_period, __pyx_v_period) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8333 
8334  /* "WaveTools.pyx":351
8335  * self.phi0=phi0
8336  * self.period = period
8337  * self.waveHeight = waveHeight # <<<<<<<<<<<<<<
8338  * self.mwl = mwl
8339  * self.depth = depth
8340  */
8341  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveHeight, __pyx_v_waveHeight) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8342 
8343  /* "WaveTools.pyx":352
8344  * self.period = period
8345  * self.waveHeight = waveHeight
8346  * self.mwl = mwl # <<<<<<<<<<<<<<
8347  * self.depth = depth
8348  * self.omega = 2.0*pi/period
8349  */
8350  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8351 
8352  /* "WaveTools.pyx":353
8353  * self.waveHeight = waveHeight
8354  * self.mwl = mwl
8355  * self.depth = depth # <<<<<<<<<<<<<<
8356  * self.omega = 2.0*pi/period
8357  *
8358  */
8359  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth, __pyx_v_depth) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8360 
8361  /* "WaveTools.pyx":354
8362  * self.mwl = mwl
8363  * self.depth = depth
8364  * self.omega = 2.0*pi/period # <<<<<<<<<<<<<<
8365  *
8366  * #Calculating / checking wavelength data
8367  */
8368  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8369  __Pyx_GOTREF(__pyx_t_6);
8370  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8371  __Pyx_GOTREF(__pyx_t_1);
8372  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8373  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_period); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8374  __Pyx_GOTREF(__pyx_t_6);
8375  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8376  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omega, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8377  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8378 
8379  /* "WaveTools.pyx":357
8380  *
8381  * #Calculating / checking wavelength data
8382  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
8383  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
8384  * self.wavelength = 2.0*pi/self.k
8385  */
8386  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8387  __Pyx_GOTREF(__pyx_t_6);
8388  __pyx_t_4 = (__pyx_t_6 == __pyx_n_s_Linear);
8389  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8390  __pyx_t_3 = (__pyx_t_4 != 0);
8391  if (__pyx_t_3) {
8392 
8393  /* "WaveTools.pyx":358
8394  * #Calculating / checking wavelength data
8395  * if self.waveType is "Linear":
8396  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
8397  * self.wavelength = 2.0*pi/self.k
8398  * else:
8399  */
8400  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8401  __Pyx_GOTREF(__pyx_t_6);
8402  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8403  __Pyx_GOTREF(__pyx_t_1);
8404  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8405  __Pyx_GOTREF(__pyx_t_2);
8406  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_w, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8407  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8408  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8409  __Pyx_GOTREF(__pyx_t_2);
8410  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_d, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8411  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8412  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8413  __Pyx_GOTREF(__pyx_t_2);
8414  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_g, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8415  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8416  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8417  __Pyx_GOTREF(__pyx_t_2);
8418  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8419  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8420  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_k, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8421  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8422 
8423  /* "WaveTools.pyx":359
8424  * if self.waveType is "Linear":
8425  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
8426  * self.wavelength = 2.0*pi/self.k # <<<<<<<<<<<<<<
8427  * else:
8428  * try:
8429  */
8430  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8431  __Pyx_GOTREF(__pyx_t_2);
8432  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8433  __Pyx_GOTREF(__pyx_t_1);
8434  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8435  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8436  __Pyx_GOTREF(__pyx_t_2);
8437  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8438  __Pyx_GOTREF(__pyx_t_6);
8439  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8440  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8441  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_wavelength, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8442  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8443 
8444  /* "WaveTools.pyx":357
8445  *
8446  * #Calculating / checking wavelength data
8447  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
8448  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
8449  * self.wavelength = 2.0*pi/self.k
8450  */
8451  goto __pyx_L4;
8452  }
8453 
8454  /* "WaveTools.pyx":361
8455  * self.wavelength = 2.0*pi/self.k
8456  * else:
8457  * try: # <<<<<<<<<<<<<<
8458  * self.k = 2.0*pi/wavelength
8459  * self.wavelength=wavelength
8460  */
8461  /*else*/ {
8462  {
8463  __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
8464  __Pyx_XGOTREF(__pyx_t_10);
8465  __Pyx_XGOTREF(__pyx_t_11);
8466  __Pyx_XGOTREF(__pyx_t_12);
8467  /*try:*/ {
8468 
8469  /* "WaveTools.pyx":362
8470  * else:
8471  * try:
8472  * self.k = 2.0*pi/wavelength # <<<<<<<<<<<<<<
8473  * self.wavelength=wavelength
8474  * except:
8475  */
8476  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8477  __Pyx_GOTREF(__pyx_t_6);
8478  __pyx_t_2 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8479  __Pyx_GOTREF(__pyx_t_2);
8480  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8481  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_v_wavelength); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8482  __Pyx_GOTREF(__pyx_t_6);
8483  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8484  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_k, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8485  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8486 
8487  /* "WaveTools.pyx":363
8488  * try:
8489  * self.k = 2.0*pi/wavelength
8490  * self.wavelength=wavelength # <<<<<<<<<<<<<<
8491  * except:
8492  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8493  */
8494  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_wavelength, __pyx_v_wavelength) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8495 
8496  /* "WaveTools.pyx":361
8497  * self.wavelength = 2.0*pi/self.k
8498  * else:
8499  * try: # <<<<<<<<<<<<<<
8500  * self.k = 2.0*pi/wavelength
8501  * self.wavelength=wavelength
8502  */
8503  }
8504  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
8505  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
8506  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
8507  goto __pyx_L12_try_end;
8508  __pyx_L5_error:;
8509  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8510  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
8511  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
8512  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
8513  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
8514  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
8515 
8516  /* "WaveTools.pyx":364
8517  * self.k = 2.0*pi/wavelength
8518  * self.wavelength=wavelength
8519  * except: # <<<<<<<<<<<<<<
8520  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8521  * sys.exit(1)
8522  */
8523  /*except:*/ {
8524  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8525  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8526  __Pyx_GOTREF(__pyx_t_6);
8527  __Pyx_GOTREF(__pyx_t_2);
8528  __Pyx_GOTREF(__pyx_t_1);
8529 
8530  /* "WaveTools.pyx":365
8531  * self.wavelength=wavelength
8532  * except:
8533  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0) # <<<<<<<<<<<<<<
8534  * sys.exit(1)
8535  * self.kDir = self.k * self.waveDir
8536  */
8537  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8538  __Pyx_GOTREF(__pyx_t_8);
8539  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8540  __Pyx_GOTREF(__pyx_t_5);
8541  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8542  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__38, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8543  __Pyx_GOTREF(__pyx_t_7);
8544  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8545  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8546  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8547 
8548  /* "WaveTools.pyx":366
8549  * except:
8550  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8551  * sys.exit(1) # <<<<<<<<<<<<<<
8552  * self.kDir = self.k * self.waveDir
8553  * self.amplitude = 0.5*self.waveHeight
8554  */
8555  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8556  __Pyx_GOTREF(__pyx_t_7);
8557  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8558  __Pyx_GOTREF(__pyx_t_5);
8559  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8560  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8561  __Pyx_GOTREF(__pyx_t_7);
8562  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8563  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8564  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8565  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8566  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8567  goto __pyx_L6_exception_handled;
8568  }
8569  __pyx_L7_except_error:;
8570 
8571  /* "WaveTools.pyx":361
8572  * self.wavelength = 2.0*pi/self.k
8573  * else:
8574  * try: # <<<<<<<<<<<<<<
8575  * self.k = 2.0*pi/wavelength
8576  * self.wavelength=wavelength
8577  */
8578  __Pyx_XGIVEREF(__pyx_t_10);
8579  __Pyx_XGIVEREF(__pyx_t_11);
8580  __Pyx_XGIVEREF(__pyx_t_12);
8581  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
8582  goto __pyx_L1_error;
8583  __pyx_L6_exception_handled:;
8584  __Pyx_XGIVEREF(__pyx_t_10);
8585  __Pyx_XGIVEREF(__pyx_t_11);
8586  __Pyx_XGIVEREF(__pyx_t_12);
8587  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
8588  __pyx_L12_try_end:;
8589  }
8590  }
8591  __pyx_L4:;
8592 
8593  /* "WaveTools.pyx":367
8594  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8595  * sys.exit(1)
8596  * self.kDir = self.k * self.waveDir # <<<<<<<<<<<<<<
8597  * self.amplitude = 0.5*self.waveHeight
8598  * self.meanVelocity = np.array(meanVelocity)
8599  */
8600  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8601  __Pyx_GOTREF(__pyx_t_1);
8602  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8603  __Pyx_GOTREF(__pyx_t_2);
8604  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8605  __Pyx_GOTREF(__pyx_t_6);
8606  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8607  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8608  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDir, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8609  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8610 
8611  /* "WaveTools.pyx":368
8612  * sys.exit(1)
8613  * self.kDir = self.k * self.waveDir
8614  * self.amplitude = 0.5*self.waveHeight # <<<<<<<<<<<<<<
8615  * self.meanVelocity = np.array(meanVelocity)
8616  * #Checking that meanvelocity is a vector
8617  */
8618  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveHeight); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8619  __Pyx_GOTREF(__pyx_t_6);
8620  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8621  __Pyx_GOTREF(__pyx_t_2);
8622  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8623  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_amplitude, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8624  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8625 
8626  /* "WaveTools.pyx":369
8627  * self.kDir = self.k * self.waveDir
8628  * self.amplitude = 0.5*self.waveHeight
8629  * self.meanVelocity = np.array(meanVelocity) # <<<<<<<<<<<<<<
8630  * #Checking that meanvelocity is a vector
8631  *
8632  */
8633  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8634  __Pyx_GOTREF(__pyx_t_6);
8635  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8636  __Pyx_GOTREF(__pyx_t_1);
8637  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8638  __pyx_t_6 = NULL;
8639  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8640  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
8641  if (likely(__pyx_t_6)) {
8642  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8643  __Pyx_INCREF(__pyx_t_6);
8644  __Pyx_INCREF(function);
8645  __Pyx_DECREF_SET(__pyx_t_1, function);
8646  }
8647  }
8648  if (!__pyx_t_6) {
8649  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_meanVelocity); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8650  __Pyx_GOTREF(__pyx_t_2);
8651  } else {
8652  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8653  __Pyx_GOTREF(__pyx_t_7);
8654  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
8655  __Pyx_INCREF(__pyx_v_meanVelocity);
8656  __Pyx_GIVEREF(__pyx_v_meanVelocity);
8657  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_meanVelocity);
8658  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8659  __Pyx_GOTREF(__pyx_t_2);
8660  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8661  }
8662  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8663  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_meanVelocity, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8664  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8665 
8666  /* "WaveTools.pyx":372
8667  * #Checking that meanvelocity is a vector
8668  *
8669  * if(len(meanVelocity) != 3): # <<<<<<<<<<<<<<
8670  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
8671  * sys.exit(1)
8672  */
8673  __pyx_t_9 = PyObject_Length(__pyx_v_meanVelocity); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8674  __pyx_t_3 = ((__pyx_t_9 != 3) != 0);
8675  if (__pyx_t_3) {
8676 
8677  /* "WaveTools.pyx":373
8678  *
8679  * if(len(meanVelocity) != 3):
8680  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0) # <<<<<<<<<<<<<<
8681  * sys.exit(1)
8682  *
8683  */
8684  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8685  __Pyx_GOTREF(__pyx_t_2);
8686  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8687  __Pyx_GOTREF(__pyx_t_1);
8688  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8689  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__40, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8690  __Pyx_GOTREF(__pyx_t_7);
8691  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8692  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8693  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8694 
8695  /* "WaveTools.pyx":374
8696  * if(len(meanVelocity) != 3):
8697  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
8698  * sys.exit(1) # <<<<<<<<<<<<<<
8699  *
8700  * self.Ycoeff = Ycoeff
8701  */
8702  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8703  __Pyx_GOTREF(__pyx_t_7);
8704  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8705  __Pyx_GOTREF(__pyx_t_1);
8706  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8707  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8708  __Pyx_GOTREF(__pyx_t_7);
8709  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8710  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8711 
8712  /* "WaveTools.pyx":372
8713  * #Checking that meanvelocity is a vector
8714  *
8715  * if(len(meanVelocity) != 3): # <<<<<<<<<<<<<<
8716  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
8717  * sys.exit(1)
8718  */
8719  }
8720 
8721  /* "WaveTools.pyx":376
8722  * sys.exit(1)
8723  *
8724  * self.Ycoeff = Ycoeff # <<<<<<<<<<<<<<
8725  * self.Bcoeff = Bcoeff
8726  *
8727  */
8728  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Ycoeff, __pyx_v_Ycoeff) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8729 
8730  /* "WaveTools.pyx":377
8731  *
8732  * self.Ycoeff = Ycoeff
8733  * self.Bcoeff = Bcoeff # <<<<<<<<<<<<<<
8734  *
8735  * # Checking for
8736  */
8737  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Bcoeff, __pyx_v_Bcoeff) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8738 
8739  /* "WaveTools.pyx":380
8740  *
8741  * # Checking for
8742  * if (Ycoeff is None) or (Bcoeff is None): # <<<<<<<<<<<<<<
8743  * if self.waveType is not "Linear":
8744  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8745  */
8746  __pyx_t_4 = (__pyx_v_Ycoeff == Py_None);
8747  __pyx_t_13 = (__pyx_t_4 != 0);
8748  if (!__pyx_t_13) {
8749  } else {
8750  __pyx_t_3 = __pyx_t_13;
8751  goto __pyx_L17_bool_binop_done;
8752  }
8753  __pyx_t_13 = (__pyx_v_Bcoeff == Py_None);
8754  __pyx_t_4 = (__pyx_t_13 != 0);
8755  __pyx_t_3 = __pyx_t_4;
8756  __pyx_L17_bool_binop_done:;
8757  if (__pyx_t_3) {
8758 
8759  /* "WaveTools.pyx":381
8760  * # Checking for
8761  * if (Ycoeff is None) or (Bcoeff is None):
8762  * if self.waveType is not "Linear": # <<<<<<<<<<<<<<
8763  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8764  * sys.exit(1)
8765  */
8766  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8767  __Pyx_GOTREF(__pyx_t_7);
8768  __pyx_t_3 = (__pyx_t_7 != __pyx_n_s_Linear);
8769  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8770  __pyx_t_4 = (__pyx_t_3 != 0);
8771  if (__pyx_t_4) {
8772 
8773  /* "WaveTools.pyx":382
8774  * if (Ycoeff is None) or (Bcoeff is None):
8775  * if self.waveType is not "Linear":
8776  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0) # <<<<<<<<<<<<<<
8777  * sys.exit(1)
8778  * def eta(self, x, t):
8779  */
8780  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8781  __Pyx_GOTREF(__pyx_t_7);
8782  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8783  __Pyx_GOTREF(__pyx_t_1);
8784  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8785  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__42, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8786  __Pyx_GOTREF(__pyx_t_2);
8787  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8788  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8789  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8790 
8791  /* "WaveTools.pyx":383
8792  * if self.waveType is not "Linear":
8793  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8794  * sys.exit(1) # <<<<<<<<<<<<<<
8795  * def eta(self, x, t):
8796  * if self.waveType is "Linear":
8797  */
8798  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8799  __Pyx_GOTREF(__pyx_t_2);
8800  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8801  __Pyx_GOTREF(__pyx_t_1);
8802  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8803  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8804  __Pyx_GOTREF(__pyx_t_2);
8805  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8806  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8807 
8808  /* "WaveTools.pyx":381
8809  * # Checking for
8810  * if (Ycoeff is None) or (Bcoeff is None):
8811  * if self.waveType is not "Linear": # <<<<<<<<<<<<<<
8812  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8813  * sys.exit(1)
8814  */
8815  }
8816 
8817  /* "WaveTools.pyx":380
8818  *
8819  * # Checking for
8820  * if (Ycoeff is None) or (Bcoeff is None): # <<<<<<<<<<<<<<
8821  * if self.waveType is not "Linear":
8822  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8823  */
8824  }
8825 
8826  /* "WaveTools.pyx":324
8827  * :phi0: Phase of the wave
8828  * """
8829  * def __init__(self, # <<<<<<<<<<<<<<
8830  * period,
8831  * waveHeight,
8832  */
8833 
8834  /* function exit code */
8835  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8836  goto __pyx_L0;
8837  __pyx_L1_error:;
8838  __Pyx_XDECREF(__pyx_t_1);
8839  __Pyx_XDECREF(__pyx_t_2);
8840  __Pyx_XDECREF(__pyx_t_5);
8841  __Pyx_XDECREF(__pyx_t_6);
8842  __Pyx_XDECREF(__pyx_t_7);
8843  __Pyx_XDECREF(__pyx_t_8);
8844  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8845  __pyx_r = NULL;
8846  __pyx_L0:;
8847  __Pyx_XGIVEREF(__pyx_r);
8848  __Pyx_RefNannyFinishContext();
8849  return __pyx_r;
8850 }
8851 
8852 /* "WaveTools.pyx":384
8853  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8854  * sys.exit(1)
8855  * def eta(self, x, t): # <<<<<<<<<<<<<<
8856  * if self.waveType is "Linear":
8857  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
8858  */
8859 
8860 /* Python wrapper */
8861 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8862 static char __pyx_doc_9WaveTools_18MonochromaticWaves_2eta[] = "MonochromaticWaves.eta(self, x, t)";
8863 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_2eta};
8864 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8865  PyObject *__pyx_v_self = 0;
8866  PyObject *__pyx_v_x = 0;
8867  PyObject *__pyx_v_t = 0;
8868  int __pyx_lineno = 0;
8869  const char *__pyx_filename = NULL;
8870  int __pyx_clineno = 0;
8871  PyObject *__pyx_r = 0;
8872  __Pyx_RefNannyDeclarations
8873  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
8874  {
8875  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
8876  PyObject* values[3] = {0,0,0};
8877  if (unlikely(__pyx_kwds)) {
8878  Py_ssize_t kw_args;
8879  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8880  switch (pos_args) {
8881  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8882  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8883  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8884  case 0: break;
8885  default: goto __pyx_L5_argtuple_error;
8886  }
8887  kw_args = PyDict_Size(__pyx_kwds);
8888  switch (pos_args) {
8889  case 0:
8890  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
8891  else goto __pyx_L5_argtuple_error;
8892  case 1:
8893  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8894  else {
8895  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8896  }
8897  case 2:
8898  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8899  else {
8900  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8901  }
8902  }
8903  if (unlikely(kw_args > 0)) {
8904  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8905  }
8906  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
8907  goto __pyx_L5_argtuple_error;
8908  } else {
8909  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8910  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8911  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8912  }
8913  __pyx_v_self = values[0];
8914  __pyx_v_x = values[1];
8915  __pyx_v_t = values[2];
8916  }
8917  goto __pyx_L4_argument_unpacking_done;
8918  __pyx_L5_argtuple_error:;
8919  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8920  __pyx_L3_error:;
8921  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
8922  __Pyx_RefNannyFinishContext();
8923  return NULL;
8924  __pyx_L4_argument_unpacking_done:;
8925  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
8926 
8927  /* function exit code */
8928  __Pyx_RefNannyFinishContext();
8929  return __pyx_r;
8930 }
8931 
8932 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
8933  PyObject *__pyx_v_HH = NULL;
8934  double __pyx_v_ii;
8935  PyObject *__pyx_v_Y = NULL;
8936  PyObject *__pyx_r = NULL;
8937  __Pyx_RefNannyDeclarations
8938  PyObject *__pyx_t_1 = NULL;
8939  int __pyx_t_2;
8940  int __pyx_t_3;
8941  PyObject *__pyx_t_4 = NULL;
8942  PyObject *__pyx_t_5 = NULL;
8943  PyObject *__pyx_t_6 = NULL;
8944  PyObject *__pyx_t_7 = NULL;
8945  PyObject *__pyx_t_8 = NULL;
8946  PyObject *__pyx_t_9 = NULL;
8947  Py_ssize_t __pyx_t_10;
8948  PyObject *__pyx_t_11 = NULL;
8949  PyObject *(*__pyx_t_12)(PyObject *);
8950  Py_ssize_t __pyx_t_13;
8951  int __pyx_lineno = 0;
8952  const char *__pyx_filename = NULL;
8953  int __pyx_clineno = 0;
8954  __Pyx_RefNannySetupContext("eta", 0);
8955 
8956  /* "WaveTools.pyx":385
8957  * sys.exit(1)
8958  * def eta(self, x, t):
8959  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
8960  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
8961  * elif self.waveType is "Fenton":
8962  */
8963  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8964  __Pyx_GOTREF(__pyx_t_1);
8965  __pyx_t_2 = (__pyx_t_1 == __pyx_n_s_Linear);
8966  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8967  __pyx_t_3 = (__pyx_t_2 != 0);
8968  if (__pyx_t_3) {
8969 
8970  /* "WaveTools.pyx":386
8971  * def eta(self, x, t):
8972  * if self.waveType is "Linear":
8973  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude) # <<<<<<<<<<<<<<
8974  * elif self.waveType is "Fenton":
8975  * HH = 0.
8976  */
8977  __Pyx_XDECREF(__pyx_r);
8978  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8979  __Pyx_GOTREF(__pyx_t_4);
8980  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8981  __Pyx_GOTREF(__pyx_t_5);
8982  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8983  __Pyx_GOTREF(__pyx_t_6);
8984  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8985  __Pyx_GOTREF(__pyx_t_7);
8986  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_amplitude); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8987  __Pyx_GOTREF(__pyx_t_8);
8988  __pyx_t_9 = NULL;
8989  __pyx_t_10 = 0;
8990  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
8991  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
8992  if (likely(__pyx_t_9)) {
8993  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
8994  __Pyx_INCREF(__pyx_t_9);
8995  __Pyx_INCREF(function);
8996  __Pyx_DECREF_SET(__pyx_t_4, function);
8997  __pyx_t_10 = 1;
8998  }
8999  }
9000  __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9001  __Pyx_GOTREF(__pyx_t_11);
9002  if (__pyx_t_9) {
9003  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
9004  }
9005  __Pyx_INCREF(__pyx_v_x);
9006  __Pyx_GIVEREF(__pyx_v_x);
9007  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_x);
9008  __Pyx_INCREF(__pyx_v_t);
9009  __Pyx_GIVEREF(__pyx_v_t);
9010  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_v_t);
9011  __Pyx_GIVEREF(__pyx_t_5);
9012  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_5);
9013  __Pyx_GIVEREF(__pyx_t_6);
9014  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_6);
9015  __Pyx_GIVEREF(__pyx_t_7);
9016  PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_t_7);
9017  __Pyx_GIVEREF(__pyx_t_8);
9018  PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_t_8);
9019  __pyx_t_5 = 0;
9020  __pyx_t_6 = 0;
9021  __pyx_t_7 = 0;
9022  __pyx_t_8 = 0;
9023  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9024  __Pyx_GOTREF(__pyx_t_1);
9025  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9026  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9027  __pyx_r = __pyx_t_1;
9028  __pyx_t_1 = 0;
9029  goto __pyx_L0;
9030 
9031  /* "WaveTools.pyx":385
9032  * sys.exit(1)
9033  * def eta(self, x, t):
9034  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
9035  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9036  * elif self.waveType is "Fenton":
9037  */
9038  }
9039 
9040  /* "WaveTools.pyx":387
9041  * if self.waveType is "Linear":
9042  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9043  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9044  * HH = 0.
9045  * ii =0.
9046  */
9047  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9048  __Pyx_GOTREF(__pyx_t_1);
9049  __pyx_t_3 = (__pyx_t_1 == __pyx_n_s_Fenton);
9050  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9051  __pyx_t_2 = (__pyx_t_3 != 0);
9052  if (__pyx_t_2) {
9053 
9054  /* "WaveTools.pyx":388
9055  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9056  * elif self.waveType is "Fenton":
9057  * HH = 0. # <<<<<<<<<<<<<<
9058  * ii =0.
9059  * for Y in self.Ycoeff:
9060  */
9061  __Pyx_INCREF(__pyx_float_0_);
9062  __pyx_v_HH = __pyx_float_0_;
9063 
9064  /* "WaveTools.pyx":389
9065  * elif self.waveType is "Fenton":
9066  * HH = 0.
9067  * ii =0. # <<<<<<<<<<<<<<
9068  * for Y in self.Ycoeff:
9069  * ii+=1
9070  */
9071  __pyx_v_ii = 0.;
9072 
9073  /* "WaveTools.pyx":390
9074  * HH = 0.
9075  * ii =0.
9076  * for Y in self.Ycoeff: # <<<<<<<<<<<<<<
9077  * ii+=1
9078  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,ii*self.phi0,Y)
9079  */
9080  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Ycoeff); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9081  __Pyx_GOTREF(__pyx_t_1);
9082  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
9083  __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_10 = 0;
9084  __pyx_t_12 = NULL;
9085  } else {
9086  __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9087  __Pyx_GOTREF(__pyx_t_4);
9088  __pyx_t_12 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9089  }
9090  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9091  for (;;) {
9092  if (likely(!__pyx_t_12)) {
9093  if (likely(PyList_CheckExact(__pyx_t_4))) {
9094  if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_4)) break;
9095  #if CYTHON_COMPILING_IN_CPYTHON
9096  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9097  #else
9098  __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9099  __Pyx_GOTREF(__pyx_t_1);
9100  #endif
9101  } else {
9102  if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
9103  #if CYTHON_COMPILING_IN_CPYTHON
9104  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9105  #else
9106  __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9107  __Pyx_GOTREF(__pyx_t_1);
9108  #endif
9109  }
9110  } else {
9111  __pyx_t_1 = __pyx_t_12(__pyx_t_4);
9112  if (unlikely(!__pyx_t_1)) {
9113  PyObject* exc_type = PyErr_Occurred();
9114  if (exc_type) {
9115  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
9116  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9117  }
9118  break;
9119  }
9120  __Pyx_GOTREF(__pyx_t_1);
9121  }
9122  __Pyx_XDECREF_SET(__pyx_v_Y, __pyx_t_1);
9123  __pyx_t_1 = 0;
9124 
9125  /* "WaveTools.pyx":391
9126  * ii =0.
9127  * for Y in self.Ycoeff:
9128  * ii+=1 # <<<<<<<<<<<<<<
9129  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,ii*self.phi0,Y)
9130  * return HH/self.k
9131  */
9132  __pyx_v_ii = (__pyx_v_ii + 1.0);
9133 
9134  /* "WaveTools.pyx":392
9135  * for Y in self.Ycoeff:
9136  * ii+=1
9137  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,ii*self.phi0,Y) # <<<<<<<<<<<<<<
9138  * return HH/self.k
9139  *
9140  */
9141  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9142  __Pyx_GOTREF(__pyx_t_11);
9143  __pyx_t_8 = PyFloat_FromDouble(__pyx_v_ii); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9144  __Pyx_GOTREF(__pyx_t_8);
9145  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9146  __Pyx_GOTREF(__pyx_t_7);
9147  __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9148  __Pyx_GOTREF(__pyx_t_6);
9149  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9150  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9151  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_ii); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9152  __Pyx_GOTREF(__pyx_t_7);
9153  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9154  __Pyx_GOTREF(__pyx_t_8);
9155  __pyx_t_5 = PyNumber_Multiply(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9156  __Pyx_GOTREF(__pyx_t_5);
9157  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9158  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9159  __pyx_t_8 = PyFloat_FromDouble(__pyx_v_ii); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9160  __Pyx_GOTREF(__pyx_t_8);
9161  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9162  __Pyx_GOTREF(__pyx_t_7);
9163  __pyx_t_9 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9164  __Pyx_GOTREF(__pyx_t_9);
9165  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9166  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9167  __pyx_t_7 = NULL;
9168  __pyx_t_13 = 0;
9169  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
9170  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
9171  if (likely(__pyx_t_7)) {
9172  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
9173  __Pyx_INCREF(__pyx_t_7);
9174  __Pyx_INCREF(function);
9175  __Pyx_DECREF_SET(__pyx_t_11, function);
9176  __pyx_t_13 = 1;
9177  }
9178  }
9179  __pyx_t_8 = PyTuple_New(6+__pyx_t_13); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9180  __Pyx_GOTREF(__pyx_t_8);
9181  if (__pyx_t_7) {
9182  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
9183  }
9184  __Pyx_INCREF(__pyx_v_x);
9185  __Pyx_GIVEREF(__pyx_v_x);
9186  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_13, __pyx_v_x);
9187  __Pyx_INCREF(__pyx_v_t);
9188  __Pyx_GIVEREF(__pyx_v_t);
9189  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_13, __pyx_v_t);
9190  __Pyx_GIVEREF(__pyx_t_6);
9191  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_13, __pyx_t_6);
9192  __Pyx_GIVEREF(__pyx_t_5);
9193  PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_13, __pyx_t_5);
9194  __Pyx_GIVEREF(__pyx_t_9);
9195  PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_13, __pyx_t_9);
9196  __Pyx_INCREF(__pyx_v_Y);
9197  __Pyx_GIVEREF(__pyx_v_Y);
9198  PyTuple_SET_ITEM(__pyx_t_8, 5+__pyx_t_13, __pyx_v_Y);
9199  __pyx_t_6 = 0;
9200  __pyx_t_5 = 0;
9201  __pyx_t_9 = 0;
9202  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9203  __Pyx_GOTREF(__pyx_t_1);
9204  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9205  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9206  __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_HH, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9207  __Pyx_GOTREF(__pyx_t_11);
9208  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9209  __Pyx_DECREF_SET(__pyx_v_HH, __pyx_t_11);
9210  __pyx_t_11 = 0;
9211 
9212  /* "WaveTools.pyx":390
9213  * HH = 0.
9214  * ii =0.
9215  * for Y in self.Ycoeff: # <<<<<<<<<<<<<<
9216  * ii+=1
9217  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,ii*self.phi0,Y)
9218  */
9219  }
9220  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9221 
9222  /* "WaveTools.pyx":393
9223  * ii+=1
9224  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,ii*self.phi0,Y)
9225  * return HH/self.k # <<<<<<<<<<<<<<
9226  *
9227  * def u(self, x, t):
9228  */
9229  __Pyx_XDECREF(__pyx_r);
9230  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9231  __Pyx_GOTREF(__pyx_t_4);
9232  __pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_v_HH, __pyx_t_4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9233  __Pyx_GOTREF(__pyx_t_11);
9234  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9235  __pyx_r = __pyx_t_11;
9236  __pyx_t_11 = 0;
9237  goto __pyx_L0;
9238 
9239  /* "WaveTools.pyx":387
9240  * if self.waveType is "Linear":
9241  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9242  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9243  * HH = 0.
9244  * ii =0.
9245  */
9246  }
9247 
9248  /* "WaveTools.pyx":384
9249  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
9250  * sys.exit(1)
9251  * def eta(self, x, t): # <<<<<<<<<<<<<<
9252  * if self.waveType is "Linear":
9253  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9254  */
9255 
9256  /* function exit code */
9257  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9258  goto __pyx_L0;
9259  __pyx_L1_error:;
9260  __Pyx_XDECREF(__pyx_t_1);
9261  __Pyx_XDECREF(__pyx_t_4);
9262  __Pyx_XDECREF(__pyx_t_5);
9263  __Pyx_XDECREF(__pyx_t_6);
9264  __Pyx_XDECREF(__pyx_t_7);
9265  __Pyx_XDECREF(__pyx_t_8);
9266  __Pyx_XDECREF(__pyx_t_9);
9267  __Pyx_XDECREF(__pyx_t_11);
9268  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
9269  __pyx_r = NULL;
9270  __pyx_L0:;
9271  __Pyx_XDECREF(__pyx_v_HH);
9272  __Pyx_XDECREF(__pyx_v_Y);
9273  __Pyx_XGIVEREF(__pyx_r);
9274  __Pyx_RefNannyFinishContext();
9275  return __pyx_r;
9276 }
9277 
9278 /* "WaveTools.pyx":395
9279  * return HH/self.k
9280  *
9281  * def u(self, x, t): # <<<<<<<<<<<<<<
9282  * if self.waveType is "Linear":
9283  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9284  */
9285 
9286 /* Python wrapper */
9287 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9288 static char __pyx_doc_9WaveTools_18MonochromaticWaves_4u[] = "MonochromaticWaves.u(self, x, t)";
9289 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_4u};
9290 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9291  PyObject *__pyx_v_self = 0;
9292  PyObject *__pyx_v_x = 0;
9293  PyObject *__pyx_v_t = 0;
9294  int __pyx_lineno = 0;
9295  const char *__pyx_filename = NULL;
9296  int __pyx_clineno = 0;
9297  PyObject *__pyx_r = 0;
9298  __Pyx_RefNannyDeclarations
9299  __Pyx_RefNannySetupContext("u (wrapper)", 0);
9300  {
9301  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
9302  PyObject* values[3] = {0,0,0};
9303  if (unlikely(__pyx_kwds)) {
9304  Py_ssize_t kw_args;
9305  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9306  switch (pos_args) {
9307  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9308  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9309  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9310  case 0: break;
9311  default: goto __pyx_L5_argtuple_error;
9312  }
9313  kw_args = PyDict_Size(__pyx_kwds);
9314  switch (pos_args) {
9315  case 0:
9316  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
9317  else goto __pyx_L5_argtuple_error;
9318  case 1:
9319  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
9320  else {
9321  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9322  }
9323  case 2:
9324  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
9325  else {
9326  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9327  }
9328  }
9329  if (unlikely(kw_args > 0)) {
9330  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9331  }
9332  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
9333  goto __pyx_L5_argtuple_error;
9334  } else {
9335  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9336  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9337  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9338  }
9339  __pyx_v_self = values[0];
9340  __pyx_v_x = values[1];
9341  __pyx_v_t = values[2];
9342  }
9343  goto __pyx_L4_argument_unpacking_done;
9344  __pyx_L5_argtuple_error:;
9345  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9346  __pyx_L3_error:;
9347  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
9348  __Pyx_RefNannyFinishContext();
9349  return NULL;
9350  __pyx_L4_argument_unpacking_done:;
9351  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
9352 
9353  /* function exit code */
9354  __Pyx_RefNannyFinishContext();
9355  return __pyx_r;
9356 }
9357 
9358 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
9359  PyObject *__pyx_v_Ufenton = NULL;
9360  PyObject *__pyx_v_ii = NULL;
9361  PyObject *__pyx_v_B = NULL;
9362  PyObject *__pyx_v_wmode = NULL;
9363  PyObject *__pyx_v_kmode = NULL;
9364  PyObject *__pyx_v_kdir = NULL;
9365  PyObject *__pyx_v_amp = NULL;
9366  PyObject *__pyx_r = NULL;
9367  __Pyx_RefNannyDeclarations
9368  PyObject *__pyx_t_1 = NULL;
9369  int __pyx_t_2;
9370  int __pyx_t_3;
9371  PyObject *__pyx_t_4 = NULL;
9372  PyObject *__pyx_t_5 = NULL;
9373  PyObject *__pyx_t_6 = NULL;
9374  PyObject *__pyx_t_7 = NULL;
9375  PyObject *__pyx_t_8 = NULL;
9376  PyObject *__pyx_t_9 = NULL;
9377  PyObject *__pyx_t_10 = NULL;
9378  PyObject *__pyx_t_11 = NULL;
9379  PyObject *__pyx_t_12 = NULL;
9380  PyObject *__pyx_t_13 = NULL;
9381  PyObject *__pyx_t_14 = NULL;
9382  Py_ssize_t __pyx_t_15;
9383  PyObject *__pyx_t_16 = NULL;
9384  PyObject *(*__pyx_t_17)(PyObject *);
9385  Py_ssize_t __pyx_t_18;
9386  int __pyx_lineno = 0;
9387  const char *__pyx_filename = NULL;
9388  int __pyx_clineno = 0;
9389  __Pyx_RefNannySetupContext("u", 0);
9390 
9391  /* "WaveTools.pyx":396
9392  *
9393  * def u(self, x, t):
9394  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
9395  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9396  * elif self.waveType is "Fenton":
9397  */
9398  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9399  __Pyx_GOTREF(__pyx_t_1);
9400  __pyx_t_2 = (__pyx_t_1 == __pyx_n_s_Linear);
9401  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9402  __pyx_t_3 = (__pyx_t_2 != 0);
9403  if (__pyx_t_3) {
9404 
9405  /* "WaveTools.pyx":397
9406  * def u(self, x, t):
9407  * if self.waveType is "Linear":
9408  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
9409  * elif self.waveType is "Fenton":
9410  * Ufenton = self.meanVelocity.copy()
9411  */
9412  __Pyx_XDECREF(__pyx_r);
9413  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9414  __Pyx_GOTREF(__pyx_t_4);
9415  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9416  __Pyx_GOTREF(__pyx_t_5);
9417  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9418  __Pyx_GOTREF(__pyx_t_6);
9419  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9420  __Pyx_GOTREF(__pyx_t_7);
9421  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9422  __Pyx_GOTREF(__pyx_t_8);
9423  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_amplitude); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9424  __Pyx_GOTREF(__pyx_t_9);
9425  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9426  __Pyx_GOTREF(__pyx_t_10);
9427  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9428  __Pyx_GOTREF(__pyx_t_11);
9429  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9430  __Pyx_GOTREF(__pyx_t_12);
9431  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9432  __Pyx_GOTREF(__pyx_t_13);
9433  __pyx_t_14 = NULL;
9434  __pyx_t_15 = 0;
9435  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
9436  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_4);
9437  if (likely(__pyx_t_14)) {
9438  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
9439  __Pyx_INCREF(__pyx_t_14);
9440  __Pyx_INCREF(function);
9441  __Pyx_DECREF_SET(__pyx_t_4, function);
9442  __pyx_t_15 = 1;
9443  }
9444  }
9445  __pyx_t_16 = PyTuple_New(11+__pyx_t_15); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9446  __Pyx_GOTREF(__pyx_t_16);
9447  if (__pyx_t_14) {
9448  __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
9449  }
9450  __Pyx_INCREF(__pyx_v_x);
9451  __Pyx_GIVEREF(__pyx_v_x);
9452  PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_15, __pyx_v_x);
9453  __Pyx_INCREF(__pyx_v_t);
9454  __Pyx_GIVEREF(__pyx_v_t);
9455  PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_15, __pyx_v_t);
9456  __Pyx_GIVEREF(__pyx_t_5);
9457  PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_15, __pyx_t_5);
9458  __Pyx_GIVEREF(__pyx_t_6);
9459  PyTuple_SET_ITEM(__pyx_t_16, 3+__pyx_t_15, __pyx_t_6);
9460  __Pyx_GIVEREF(__pyx_t_7);
9461  PyTuple_SET_ITEM(__pyx_t_16, 4+__pyx_t_15, __pyx_t_7);
9462  __Pyx_GIVEREF(__pyx_t_8);
9463  PyTuple_SET_ITEM(__pyx_t_16, 5+__pyx_t_15, __pyx_t_8);
9464  __Pyx_GIVEREF(__pyx_t_9);
9465  PyTuple_SET_ITEM(__pyx_t_16, 6+__pyx_t_15, __pyx_t_9);
9466  __Pyx_GIVEREF(__pyx_t_10);
9467  PyTuple_SET_ITEM(__pyx_t_16, 7+__pyx_t_15, __pyx_t_10);
9468  __Pyx_GIVEREF(__pyx_t_11);
9469  PyTuple_SET_ITEM(__pyx_t_16, 8+__pyx_t_15, __pyx_t_11);
9470  __Pyx_GIVEREF(__pyx_t_12);
9471  PyTuple_SET_ITEM(__pyx_t_16, 9+__pyx_t_15, __pyx_t_12);
9472  __Pyx_GIVEREF(__pyx_t_13);
9473  PyTuple_SET_ITEM(__pyx_t_16, 10+__pyx_t_15, __pyx_t_13);
9474  __pyx_t_5 = 0;
9475  __pyx_t_6 = 0;
9476  __pyx_t_7 = 0;
9477  __pyx_t_8 = 0;
9478  __pyx_t_9 = 0;
9479  __pyx_t_10 = 0;
9480  __pyx_t_11 = 0;
9481  __pyx_t_12 = 0;
9482  __pyx_t_13 = 0;
9483  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_16, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9484  __Pyx_GOTREF(__pyx_t_1);
9485  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
9486  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9487  __pyx_r = __pyx_t_1;
9488  __pyx_t_1 = 0;
9489  goto __pyx_L0;
9490 
9491  /* "WaveTools.pyx":396
9492  *
9493  * def u(self, x, t):
9494  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
9495  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9496  * elif self.waveType is "Fenton":
9497  */
9498  }
9499 
9500  /* "WaveTools.pyx":398
9501  * if self.waveType is "Linear":
9502  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9503  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9504  * Ufenton = self.meanVelocity.copy()
9505  * ii = 0
9506  */
9507  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9508  __Pyx_GOTREF(__pyx_t_1);
9509  __pyx_t_3 = (__pyx_t_1 == __pyx_n_s_Fenton);
9510  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9511  __pyx_t_2 = (__pyx_t_3 != 0);
9512  if (__pyx_t_2) {
9513 
9514  /* "WaveTools.pyx":399
9515  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9516  * elif self.waveType is "Fenton":
9517  * Ufenton = self.meanVelocity.copy() # <<<<<<<<<<<<<<
9518  * ii = 0
9519  * for B in self.Bcoeff:
9520  */
9521  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_meanVelocity); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9522  __Pyx_GOTREF(__pyx_t_4);
9523  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_copy); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9524  __Pyx_GOTREF(__pyx_t_16);
9525  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9526  __pyx_t_4 = NULL;
9527  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_16))) {
9528  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_16);
9529  if (likely(__pyx_t_4)) {
9530  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
9531  __Pyx_INCREF(__pyx_t_4);
9532  __Pyx_INCREF(function);
9533  __Pyx_DECREF_SET(__pyx_t_16, function);
9534  }
9535  }
9536  if (__pyx_t_4) {
9537  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9538  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9539  } else {
9540  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_16); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9541  }
9542  __Pyx_GOTREF(__pyx_t_1);
9543  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
9544  __pyx_v_Ufenton = __pyx_t_1;
9545  __pyx_t_1 = 0;
9546 
9547  /* "WaveTools.pyx":400
9548  * elif self.waveType is "Fenton":
9549  * Ufenton = self.meanVelocity.copy()
9550  * ii = 0 # <<<<<<<<<<<<<<
9551  * for B in self.Bcoeff:
9552  * ii+=1
9553  */
9554  __Pyx_INCREF(__pyx_int_0);
9555  __pyx_v_ii = __pyx_int_0;
9556 
9557  /* "WaveTools.pyx":401
9558  * Ufenton = self.meanVelocity.copy()
9559  * ii = 0
9560  * for B in self.Bcoeff: # <<<<<<<<<<<<<<
9561  * ii+=1
9562  * wmode = ii*self.omega
9563  */
9564  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Bcoeff); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9565  __Pyx_GOTREF(__pyx_t_1);
9566  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
9567  __pyx_t_16 = __pyx_t_1; __Pyx_INCREF(__pyx_t_16); __pyx_t_15 = 0;
9568  __pyx_t_17 = NULL;
9569  } else {
9570  __pyx_t_15 = -1; __pyx_t_16 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9571  __Pyx_GOTREF(__pyx_t_16);
9572  __pyx_t_17 = Py_TYPE(__pyx_t_16)->tp_iternext; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9573  }
9574  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9575  for (;;) {
9576  if (likely(!__pyx_t_17)) {
9577  if (likely(PyList_CheckExact(__pyx_t_16))) {
9578  if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_16)) break;
9579  #if CYTHON_COMPILING_IN_CPYTHON
9580  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_16, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9581  #else
9582  __pyx_t_1 = PySequence_ITEM(__pyx_t_16, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9583  __Pyx_GOTREF(__pyx_t_1);
9584  #endif
9585  } else {
9586  if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_16)) break;
9587  #if CYTHON_COMPILING_IN_CPYTHON
9588  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_16, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9589  #else
9590  __pyx_t_1 = PySequence_ITEM(__pyx_t_16, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9591  __Pyx_GOTREF(__pyx_t_1);
9592  #endif
9593  }
9594  } else {
9595  __pyx_t_1 = __pyx_t_17(__pyx_t_16);
9596  if (unlikely(!__pyx_t_1)) {
9597  PyObject* exc_type = PyErr_Occurred();
9598  if (exc_type) {
9599  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
9600  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9601  }
9602  break;
9603  }
9604  __Pyx_GOTREF(__pyx_t_1);
9605  }
9606  __Pyx_XDECREF_SET(__pyx_v_B, __pyx_t_1);
9607  __pyx_t_1 = 0;
9608 
9609  /* "WaveTools.pyx":402
9610  * ii = 0
9611  * for B in self.Bcoeff:
9612  * ii+=1 # <<<<<<<<<<<<<<
9613  * wmode = ii*self.omega
9614  * kmode = ii*self.k
9615  */
9616  __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_ii, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9617  __Pyx_GOTREF(__pyx_t_1);
9618  __Pyx_DECREF_SET(__pyx_v_ii, __pyx_t_1);
9619  __pyx_t_1 = 0;
9620 
9621  /* "WaveTools.pyx":403
9622  * for B in self.Bcoeff:
9623  * ii+=1
9624  * wmode = ii*self.omega # <<<<<<<<<<<<<<
9625  * kmode = ii*self.k
9626  * kdir = self.waveDir*kmode
9627  */
9628  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9629  __Pyx_GOTREF(__pyx_t_1);
9630  __pyx_t_4 = PyNumber_Multiply(__pyx_v_ii, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9631  __Pyx_GOTREF(__pyx_t_4);
9632  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9633  __Pyx_XDECREF_SET(__pyx_v_wmode, __pyx_t_4);
9634  __pyx_t_4 = 0;
9635 
9636  /* "WaveTools.pyx":404
9637  * ii+=1
9638  * wmode = ii*self.omega
9639  * kmode = ii*self.k # <<<<<<<<<<<<<<
9640  * kdir = self.waveDir*kmode
9641  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9642  */
9643  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9644  __Pyx_GOTREF(__pyx_t_4);
9645  __pyx_t_1 = PyNumber_Multiply(__pyx_v_ii, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9646  __Pyx_GOTREF(__pyx_t_1);
9647  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9648  __Pyx_XDECREF_SET(__pyx_v_kmode, __pyx_t_1);
9649  __pyx_t_1 = 0;
9650 
9651  /* "WaveTools.pyx":405
9652  * wmode = ii*self.omega
9653  * kmode = ii*self.k
9654  * kdir = self.waveDir*kmode # <<<<<<<<<<<<<<
9655  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9656  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,ii*self.phi0,amp,self.mwl,self.depth,self.g,self.vDir)
9657  */
9658  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9659  __Pyx_GOTREF(__pyx_t_1);
9660  __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_v_kmode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9661  __Pyx_GOTREF(__pyx_t_4);
9662  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9663  __Pyx_XDECREF_SET(__pyx_v_kdir, __pyx_t_4);
9664  __pyx_t_4 = 0;
9665 
9666  /* "WaveTools.pyx":406
9667  * kmode = ii*self.k
9668  * kdir = self.waveDir*kmode
9669  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega # <<<<<<<<<<<<<<
9670  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,ii*self.phi0,amp,self.mwl,self.depth,self.g,self.vDir)
9671  * return Ufenton # + self.meanVelocity[comp]
9672  */
9673  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_tanh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9674  __Pyx_GOTREF(__pyx_t_1);
9675  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9676  __Pyx_GOTREF(__pyx_t_13);
9677  __pyx_t_12 = PyNumber_Multiply(__pyx_v_kmode, __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9678  __Pyx_GOTREF(__pyx_t_12);
9679  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9680  __pyx_t_13 = NULL;
9681  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
9682  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_1);
9683  if (likely(__pyx_t_13)) {
9684  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
9685  __Pyx_INCREF(__pyx_t_13);
9686  __Pyx_INCREF(function);
9687  __Pyx_DECREF_SET(__pyx_t_1, function);
9688  }
9689  }
9690  if (!__pyx_t_13) {
9691  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9692  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9693  __Pyx_GOTREF(__pyx_t_4);
9694  } else {
9695  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9696  __Pyx_GOTREF(__pyx_t_11);
9697  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __pyx_t_13 = NULL;
9698  __Pyx_GIVEREF(__pyx_t_12);
9699  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_12);
9700  __pyx_t_12 = 0;
9701  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9702  __Pyx_GOTREF(__pyx_t_4);
9703  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9704  }
9705  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9706  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9707  __Pyx_GOTREF(__pyx_t_11);
9708  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9709  __Pyx_GOTREF(__pyx_t_12);
9710  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9711  __Pyx_GOTREF(__pyx_t_13);
9712  __pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9713  __Pyx_GOTREF(__pyx_t_10);
9714  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9715  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9716  __pyx_t_13 = NULL;
9717  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
9718  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
9719  if (likely(__pyx_t_13)) {
9720  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
9721  __Pyx_INCREF(__pyx_t_13);
9722  __Pyx_INCREF(function);
9723  __Pyx_DECREF_SET(__pyx_t_11, function);
9724  }
9725  }
9726  if (!__pyx_t_13) {
9727  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9728  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
9729  __Pyx_GOTREF(__pyx_t_1);
9730  } else {
9731  __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9732  __Pyx_GOTREF(__pyx_t_12);
9733  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
9734  __Pyx_GIVEREF(__pyx_t_10);
9735  PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10);
9736  __pyx_t_10 = 0;
9737  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9738  __Pyx_GOTREF(__pyx_t_1);
9739  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9740  }
9741  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9742  __pyx_t_11 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9743  __Pyx_GOTREF(__pyx_t_11);
9744  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9745  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9746  __pyx_t_1 = PyNumber_Multiply(__pyx_t_11, __pyx_v_B); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9747  __Pyx_GOTREF(__pyx_t_1);
9748  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9749  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9750  __Pyx_GOTREF(__pyx_t_11);
9751  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9752  __Pyx_GOTREF(__pyx_t_4);
9753  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9754  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9755  __Pyx_XDECREF_SET(__pyx_v_amp, __pyx_t_4);
9756  __pyx_t_4 = 0;
9757 
9758  /* "WaveTools.pyx":407
9759  * kdir = self.waveDir*kmode
9760  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9761  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,ii*self.phi0,amp,self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
9762  * return Ufenton # + self.meanVelocity[comp]
9763  *
9764  */
9765  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9766  __Pyx_GOTREF(__pyx_t_11);
9767  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9768  __Pyx_GOTREF(__pyx_t_1);
9769  __pyx_t_12 = PyNumber_Multiply(__pyx_v_ii, __pyx_t_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9770  __Pyx_GOTREF(__pyx_t_12);
9771  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9772  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9773  __Pyx_GOTREF(__pyx_t_1);
9774  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9775  __Pyx_GOTREF(__pyx_t_10);
9776  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9777  __Pyx_GOTREF(__pyx_t_13);
9778  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9779  __Pyx_GOTREF(__pyx_t_9);
9780  __pyx_t_8 = NULL;
9781  __pyx_t_18 = 0;
9782  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
9783  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11);
9784  if (likely(__pyx_t_8)) {
9785  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
9786  __Pyx_INCREF(__pyx_t_8);
9787  __Pyx_INCREF(function);
9788  __Pyx_DECREF_SET(__pyx_t_11, function);
9789  __pyx_t_18 = 1;
9790  }
9791  }
9792  __pyx_t_7 = PyTuple_New(11+__pyx_t_18); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9793  __Pyx_GOTREF(__pyx_t_7);
9794  if (__pyx_t_8) {
9795  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
9796  }
9797  __Pyx_INCREF(__pyx_v_x);
9798  __Pyx_GIVEREF(__pyx_v_x);
9799  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_18, __pyx_v_x);
9800  __Pyx_INCREF(__pyx_v_t);
9801  __Pyx_GIVEREF(__pyx_v_t);
9802  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_18, __pyx_v_t);
9803  __Pyx_INCREF(__pyx_v_kdir);
9804  __Pyx_GIVEREF(__pyx_v_kdir);
9805  PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_18, __pyx_v_kdir);
9806  __Pyx_INCREF(__pyx_v_kmode);
9807  __Pyx_GIVEREF(__pyx_v_kmode);
9808  PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_18, __pyx_v_kmode);
9809  __Pyx_INCREF(__pyx_v_wmode);
9810  __Pyx_GIVEREF(__pyx_v_wmode);
9811  PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_18, __pyx_v_wmode);
9812  __Pyx_GIVEREF(__pyx_t_12);
9813  PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_18, __pyx_t_12);
9814  __Pyx_INCREF(__pyx_v_amp);
9815  __Pyx_GIVEREF(__pyx_v_amp);
9816  PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_18, __pyx_v_amp);
9817  __Pyx_GIVEREF(__pyx_t_1);
9818  PyTuple_SET_ITEM(__pyx_t_7, 7+__pyx_t_18, __pyx_t_1);
9819  __Pyx_GIVEREF(__pyx_t_10);
9820  PyTuple_SET_ITEM(__pyx_t_7, 8+__pyx_t_18, __pyx_t_10);
9821  __Pyx_GIVEREF(__pyx_t_13);
9822  PyTuple_SET_ITEM(__pyx_t_7, 9+__pyx_t_18, __pyx_t_13);
9823  __Pyx_GIVEREF(__pyx_t_9);
9824  PyTuple_SET_ITEM(__pyx_t_7, 10+__pyx_t_18, __pyx_t_9);
9825  __pyx_t_12 = 0;
9826  __pyx_t_1 = 0;
9827  __pyx_t_10 = 0;
9828  __pyx_t_13 = 0;
9829  __pyx_t_9 = 0;
9830  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9831  __Pyx_GOTREF(__pyx_t_4);
9832  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9833  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9834  __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_Ufenton, __pyx_t_4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9835  __Pyx_GOTREF(__pyx_t_11);
9836  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9837  __Pyx_DECREF_SET(__pyx_v_Ufenton, __pyx_t_11);
9838  __pyx_t_11 = 0;
9839 
9840  /* "WaveTools.pyx":401
9841  * Ufenton = self.meanVelocity.copy()
9842  * ii = 0
9843  * for B in self.Bcoeff: # <<<<<<<<<<<<<<
9844  * ii+=1
9845  * wmode = ii*self.omega
9846  */
9847  }
9848  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
9849 
9850  /* "WaveTools.pyx":408
9851  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9852  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,ii*self.phi0,amp,self.mwl,self.depth,self.g,self.vDir)
9853  * return Ufenton # + self.meanVelocity[comp] # <<<<<<<<<<<<<<
9854  *
9855  *
9856  */
9857  __Pyx_XDECREF(__pyx_r);
9858  __Pyx_INCREF(__pyx_v_Ufenton);
9859  __pyx_r = __pyx_v_Ufenton;
9860  goto __pyx_L0;
9861 
9862  /* "WaveTools.pyx":398
9863  * if self.waveType is "Linear":
9864  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9865  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9866  * Ufenton = self.meanVelocity.copy()
9867  * ii = 0
9868  */
9869  }
9870 
9871  /* "WaveTools.pyx":395
9872  * return HH/self.k
9873  *
9874  * def u(self, x, t): # <<<<<<<<<<<<<<
9875  * if self.waveType is "Linear":
9876  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9877  */
9878 
9879  /* function exit code */
9880  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9881  goto __pyx_L0;
9882  __pyx_L1_error:;
9883  __Pyx_XDECREF(__pyx_t_1);
9884  __Pyx_XDECREF(__pyx_t_4);
9885  __Pyx_XDECREF(__pyx_t_5);
9886  __Pyx_XDECREF(__pyx_t_6);
9887  __Pyx_XDECREF(__pyx_t_7);
9888  __Pyx_XDECREF(__pyx_t_8);
9889  __Pyx_XDECREF(__pyx_t_9);
9890  __Pyx_XDECREF(__pyx_t_10);
9891  __Pyx_XDECREF(__pyx_t_11);
9892  __Pyx_XDECREF(__pyx_t_12);
9893  __Pyx_XDECREF(__pyx_t_13);
9894  __Pyx_XDECREF(__pyx_t_14);
9895  __Pyx_XDECREF(__pyx_t_16);
9896  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
9897  __pyx_r = NULL;
9898  __pyx_L0:;
9899  __Pyx_XDECREF(__pyx_v_Ufenton);
9900  __Pyx_XDECREF(__pyx_v_ii);
9901  __Pyx_XDECREF(__pyx_v_B);
9902  __Pyx_XDECREF(__pyx_v_wmode);
9903  __Pyx_XDECREF(__pyx_v_kmode);
9904  __Pyx_XDECREF(__pyx_v_kdir);
9905  __Pyx_XDECREF(__pyx_v_amp);
9906  __Pyx_XGIVEREF(__pyx_r);
9907  __Pyx_RefNannyFinishContext();
9908  return __pyx_r;
9909 }
9910 
9911 /* "WaveTools.pyx":426
9912  * """
9913  *
9914  * def __init__(self, # <<<<<<<<<<<<<<
9915  * Tp,
9916  * Hs,
9917  */
9918 
9919 /* Python wrapper */
9920 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9921 static char __pyx_doc_9WaveTools_11RandomWaves___init__[] = "RandomWaves.__init__(self, Tp, Hs, mwl, depth, waveDir, g, N, bandFactor, spectName, spectral_params=None, phi=None)";
9922 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves___init__};
9923 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9924  PyObject *__pyx_v_self = 0;
9925  PyObject *__pyx_v_Tp = 0;
9926  PyObject *__pyx_v_Hs = 0;
9927  PyObject *__pyx_v_mwl = 0;
9928  PyObject *__pyx_v_depth = 0;
9929  PyObject *__pyx_v_waveDir = 0;
9930  PyObject *__pyx_v_g = 0;
9931  PyObject *__pyx_v_N = 0;
9932  PyObject *__pyx_v_bandFactor = 0;
9933  PyObject *__pyx_v_spectName = 0;
9934  PyObject *__pyx_v_spectral_params = 0;
9935  PyObject *__pyx_v_phi = 0;
9936  int __pyx_lineno = 0;
9937  const char *__pyx_filename = NULL;
9938  int __pyx_clineno = 0;
9939  PyObject *__pyx_r = 0;
9940  __Pyx_RefNannyDeclarations
9941  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
9942  {
9943  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,0};
9944  PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
9945 
9946  /* "WaveTools.pyx":436
9947  * bandFactor, #accelerationof gravity
9948  * spectName ,# random words will result in error and return the available spectra
9949  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
9950  * phi=None
9951  * ):
9952  */
9953  values[10] = ((PyObject *)((PyObject *)Py_None));
9954 
9955  /* "WaveTools.pyx":437
9956  * spectName ,# random words will result in error and return the available spectra
9957  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
9958  * phi=None # <<<<<<<<<<<<<<
9959  * ):
9960  * validSpectra = [JONSWAP,PM_mod]
9961  */
9962  values[11] = ((PyObject *)((PyObject *)Py_None));
9963  if (unlikely(__pyx_kwds)) {
9964  Py_ssize_t kw_args;
9965  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9966  switch (pos_args) {
9967  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
9968  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
9969  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
9970  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
9971  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
9972  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
9973  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
9974  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
9975  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
9976  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9977  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9978  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9979  case 0: break;
9980  default: goto __pyx_L5_argtuple_error;
9981  }
9982  kw_args = PyDict_Size(__pyx_kwds);
9983  switch (pos_args) {
9984  case 0:
9985  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
9986  else goto __pyx_L5_argtuple_error;
9987  case 1:
9988  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
9989  else {
9990  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9991  }
9992  case 2:
9993  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
9994  else {
9995  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9996  }
9997  case 3:
9998  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
9999  else {
10000  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10001  }
10002  case 4:
10003  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
10004  else {
10005  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10006  }
10007  case 5:
10008  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
10009  else {
10010  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10011  }
10012  case 6:
10013  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
10014  else {
10015  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10016  }
10017  case 7:
10018  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
10019  else {
10020  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10021  }
10022  case 8:
10023  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
10024  else {
10025  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10026  }
10027  case 9:
10028  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
10029  else {
10030  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10031  }
10032  case 10:
10033  if (kw_args > 0) {
10034  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectral_params);
10035  if (value) { values[10] = value; kw_args--; }
10036  }
10037  case 11:
10038  if (kw_args > 0) {
10039  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi);
10040  if (value) { values[11] = value; kw_args--; }
10041  }
10042  }
10043  if (unlikely(kw_args > 0)) {
10044  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10045  }
10046  } else {
10047  switch (PyTuple_GET_SIZE(__pyx_args)) {
10048  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
10049  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
10050  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
10051  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
10052  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
10053  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
10054  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
10055  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
10056  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
10057  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
10058  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10059  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10060  break;
10061  default: goto __pyx_L5_argtuple_error;
10062  }
10063  }
10064  __pyx_v_self = values[0];
10065  __pyx_v_Tp = values[1];
10066  __pyx_v_Hs = values[2];
10067  __pyx_v_mwl = values[3];
10068  __pyx_v_depth = values[4];
10069  __pyx_v_waveDir = values[5];
10070  __pyx_v_g = values[6];
10071  __pyx_v_N = values[7];
10072  __pyx_v_bandFactor = values[8];
10073  __pyx_v_spectName = values[9];
10074  __pyx_v_spectral_params = values[10];
10075  __pyx_v_phi = values[11];
10076  }
10077  goto __pyx_L4_argument_unpacking_done;
10078  __pyx_L5_argtuple_error:;
10079  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10080  __pyx_L3_error:;
10081  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10082  __Pyx_RefNannyFinishContext();
10083  return NULL;
10084  __pyx_L4_argument_unpacking_done:;
10085  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi);
10086 
10087  /* "WaveTools.pyx":426
10088  * """
10089  *
10090  * def __init__(self, # <<<<<<<<<<<<<<
10091  * Tp,
10092  * Hs,
10093  */
10094 
10095  /* function exit code */
10096  __Pyx_RefNannyFinishContext();
10097  return __pyx_r;
10098 }
10099 
10100 static PyObject *__pyx_pf_9WaveTools_11RandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi) {
10101  PyObject *__pyx_v_validSpectra = NULL;
10102  PyObject *__pyx_v_spec_fun = NULL;
10103  long __pyx_v_ii;
10104  PyObject *__pyx_r = NULL;
10105  __Pyx_RefNannyDeclarations
10106  PyObject *__pyx_t_1 = NULL;
10107  PyObject *__pyx_t_2 = NULL;
10108  PyObject *__pyx_t_3 = NULL;
10109  Py_ssize_t __pyx_t_4;
10110  PyObject *__pyx_t_5 = NULL;
10111  PyObject *__pyx_t_6 = NULL;
10112  PyObject *__pyx_t_7 = NULL;
10113  double __pyx_t_8;
10114  PyObject *__pyx_t_9 = NULL;
10115  int __pyx_t_10;
10116  PyObject *__pyx_t_11 = NULL;
10117  PyObject *__pyx_t_12 = NULL;
10118  PyObject *__pyx_t_13 = NULL;
10119  PyObject *__pyx_t_14 = NULL;
10120  long __pyx_t_15;
10121  int __pyx_lineno = 0;
10122  const char *__pyx_filename = NULL;
10123  int __pyx_clineno = 0;
10124  __Pyx_RefNannySetupContext("__init__", 0);
10125 
10126  /* "WaveTools.pyx":439
10127  * phi=None
10128  * ):
10129  * validSpectra = [JONSWAP,PM_mod] # <<<<<<<<<<<<<<
10130  * spec_fun =loadExistingFunction(spectName, validSpectra)
10131  * self.g = np.array(g)
10132  */
10133  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_JONSWAP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10134  __Pyx_GOTREF(__pyx_t_1);
10135  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PM_mod); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10136  __Pyx_GOTREF(__pyx_t_2);
10137  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10138  __Pyx_GOTREF(__pyx_t_3);
10139  __Pyx_GIVEREF(__pyx_t_1);
10140  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
10141  __Pyx_GIVEREF(__pyx_t_2);
10142  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
10143  __pyx_t_1 = 0;
10144  __pyx_t_2 = 0;
10145  __pyx_v_validSpectra = ((PyObject*)__pyx_t_3);
10146  __pyx_t_3 = 0;
10147 
10148  /* "WaveTools.pyx":440
10149  * ):
10150  * validSpectra = [JONSWAP,PM_mod]
10151  * spec_fun =loadExistingFunction(spectName, validSpectra) # <<<<<<<<<<<<<<
10152  * self.g = np.array(g)
10153  * self.waveDir = setDirVector(np.array(waveDir))
10154  */
10155  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10156  __Pyx_GOTREF(__pyx_t_2);
10157  __pyx_t_1 = NULL;
10158  __pyx_t_4 = 0;
10159  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
10160  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
10161  if (likely(__pyx_t_1)) {
10162  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10163  __Pyx_INCREF(__pyx_t_1);
10164  __Pyx_INCREF(function);
10165  __Pyx_DECREF_SET(__pyx_t_2, function);
10166  __pyx_t_4 = 1;
10167  }
10168  }
10169  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10170  __Pyx_GOTREF(__pyx_t_5);
10171  if (__pyx_t_1) {
10172  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
10173  }
10174  __Pyx_INCREF(__pyx_v_spectName);
10175  __Pyx_GIVEREF(__pyx_v_spectName);
10176  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_spectName);
10177  __Pyx_INCREF(__pyx_v_validSpectra);
10178  __Pyx_GIVEREF(__pyx_v_validSpectra);
10179  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_validSpectra);
10180  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10181  __Pyx_GOTREF(__pyx_t_3);
10182  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10183  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10184  __pyx_v_spec_fun = __pyx_t_3;
10185  __pyx_t_3 = 0;
10186 
10187  /* "WaveTools.pyx":441
10188  * validSpectra = [JONSWAP,PM_mod]
10189  * spec_fun =loadExistingFunction(spectName, validSpectra)
10190  * self.g = np.array(g) # <<<<<<<<<<<<<<
10191  * self.waveDir = setDirVector(np.array(waveDir))
10192  * self.vDir = setVertDir(g)
10193  */
10194  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10195  __Pyx_GOTREF(__pyx_t_2);
10196  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10197  __Pyx_GOTREF(__pyx_t_5);
10198  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10199  __pyx_t_2 = NULL;
10200  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10201  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
10202  if (likely(__pyx_t_2)) {
10203  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10204  __Pyx_INCREF(__pyx_t_2);
10205  __Pyx_INCREF(function);
10206  __Pyx_DECREF_SET(__pyx_t_5, function);
10207  }
10208  }
10209  if (!__pyx_t_2) {
10210  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10211  __Pyx_GOTREF(__pyx_t_3);
10212  } else {
10213  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10214  __Pyx_GOTREF(__pyx_t_1);
10215  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
10216  __Pyx_INCREF(__pyx_v_g);
10217  __Pyx_GIVEREF(__pyx_v_g);
10218  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_g);
10219  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10220  __Pyx_GOTREF(__pyx_t_3);
10221  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10222  }
10223  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10224  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_g, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10225  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10226 
10227  /* "WaveTools.pyx":442
10228  * spec_fun =loadExistingFunction(spectName, validSpectra)
10229  * self.g = np.array(g)
10230  * self.waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
10231  * self.vDir = setVertDir(g)
10232  * dirCheck(self.waveDir,self.vDir)
10233  */
10234  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10235  __Pyx_GOTREF(__pyx_t_5);
10236  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10237  __Pyx_GOTREF(__pyx_t_2);
10238  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10239  __Pyx_GOTREF(__pyx_t_6);
10240  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10241  __pyx_t_2 = NULL;
10242  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
10243  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
10244  if (likely(__pyx_t_2)) {
10245  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10246  __Pyx_INCREF(__pyx_t_2);
10247  __Pyx_INCREF(function);
10248  __Pyx_DECREF_SET(__pyx_t_6, function);
10249  }
10250  }
10251  if (!__pyx_t_2) {
10252  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_waveDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10253  __Pyx_GOTREF(__pyx_t_1);
10254  } else {
10255  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10256  __Pyx_GOTREF(__pyx_t_7);
10257  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
10258  __Pyx_INCREF(__pyx_v_waveDir);
10259  __Pyx_GIVEREF(__pyx_v_waveDir);
10260  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_waveDir);
10261  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10262  __Pyx_GOTREF(__pyx_t_1);
10263  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10264  }
10265  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10266  __pyx_t_6 = NULL;
10267  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10268  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
10269  if (likely(__pyx_t_6)) {
10270  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10271  __Pyx_INCREF(__pyx_t_6);
10272  __Pyx_INCREF(function);
10273  __Pyx_DECREF_SET(__pyx_t_5, function);
10274  }
10275  }
10276  if (!__pyx_t_6) {
10277  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10278  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10279  __Pyx_GOTREF(__pyx_t_3);
10280  } else {
10281  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10282  __Pyx_GOTREF(__pyx_t_7);
10283  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
10284  __Pyx_GIVEREF(__pyx_t_1);
10285  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
10286  __pyx_t_1 = 0;
10287  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10288  __Pyx_GOTREF(__pyx_t_3);
10289  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10290  }
10291  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10292  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10293  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10294 
10295  /* "WaveTools.pyx":443
10296  * self.g = np.array(g)
10297  * self.waveDir = setDirVector(np.array(waveDir))
10298  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
10299  * dirCheck(self.waveDir,self.vDir)
10300  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10301  */
10302  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10303  __Pyx_GOTREF(__pyx_t_5);
10304  __pyx_t_7 = NULL;
10305  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10306  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
10307  if (likely(__pyx_t_7)) {
10308  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10309  __Pyx_INCREF(__pyx_t_7);
10310  __Pyx_INCREF(function);
10311  __Pyx_DECREF_SET(__pyx_t_5, function);
10312  }
10313  }
10314  if (!__pyx_t_7) {
10315  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10316  __Pyx_GOTREF(__pyx_t_3);
10317  } else {
10318  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10319  __Pyx_GOTREF(__pyx_t_1);
10320  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
10321  __Pyx_INCREF(__pyx_v_g);
10322  __Pyx_GIVEREF(__pyx_v_g);
10323  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_g);
10324  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10325  __Pyx_GOTREF(__pyx_t_3);
10326  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10327  }
10328  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10329  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10330  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10331 
10332  /* "WaveTools.pyx":444
10333  * self.waveDir = setDirVector(np.array(waveDir))
10334  * self.vDir = setVertDir(g)
10335  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
10336  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10337  * self.Hs = Hs
10338  */
10339  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_dirCheck); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10340  __Pyx_GOTREF(__pyx_t_5);
10341  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10342  __Pyx_GOTREF(__pyx_t_1);
10343  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10344  __Pyx_GOTREF(__pyx_t_7);
10345  __pyx_t_6 = NULL;
10346  __pyx_t_4 = 0;
10347  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10348  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
10349  if (likely(__pyx_t_6)) {
10350  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10351  __Pyx_INCREF(__pyx_t_6);
10352  __Pyx_INCREF(function);
10353  __Pyx_DECREF_SET(__pyx_t_5, function);
10354  __pyx_t_4 = 1;
10355  }
10356  }
10357  __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10358  __Pyx_GOTREF(__pyx_t_2);
10359  if (__pyx_t_6) {
10360  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL;
10361  }
10362  __Pyx_GIVEREF(__pyx_t_1);
10363  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_t_1);
10364  __Pyx_GIVEREF(__pyx_t_7);
10365  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_t_7);
10366  __pyx_t_1 = 0;
10367  __pyx_t_7 = 0;
10368  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10369  __Pyx_GOTREF(__pyx_t_3);
10370  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10371  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10372  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10373 
10374  /* "WaveTools.pyx":445
10375  * self.vDir = setVertDir(g)
10376  * dirCheck(self.waveDir,self.vDir)
10377  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
10378  * self.Hs = Hs
10379  * self.depth = depth
10380  */
10381  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10382  __Pyx_GOTREF(__pyx_t_5);
10383  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10384  __Pyx_GOTREF(__pyx_t_2);
10385  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10386  __Pyx_GOTREF(__pyx_t_7);
10387  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10388  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10389  __Pyx_GOTREF(__pyx_t_2);
10390  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10391  __Pyx_GOTREF(__pyx_t_1);
10392  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10393  __pyx_t_2 = PyNumber_Multiply(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10394  __Pyx_GOTREF(__pyx_t_2);
10395  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10396  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10397  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10398  __Pyx_GOTREF(__pyx_t_1);
10399  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10400  __Pyx_GOTREF(__pyx_t_7);
10401  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10402  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10403  __Pyx_GOTREF(__pyx_t_1);
10404  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10405  __Pyx_GOTREF(__pyx_t_6);
10406  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10407  __pyx_t_1 = PyNumber_Multiply(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10408  __Pyx_GOTREF(__pyx_t_1);
10409  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10410  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10411  __pyx_t_6 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10412  __Pyx_GOTREF(__pyx_t_6);
10413  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10414  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10415  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10416  __Pyx_GOTREF(__pyx_t_1);
10417  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10418  __Pyx_GOTREF(__pyx_t_2);
10419  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10420  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10421  __Pyx_GOTREF(__pyx_t_1);
10422  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10423  __Pyx_GOTREF(__pyx_t_7);
10424  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10425  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10426  __Pyx_GOTREF(__pyx_t_1);
10427  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10428  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10429  __pyx_t_7 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10430  __Pyx_GOTREF(__pyx_t_7);
10431  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10432  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10433  __pyx_t_1 = NULL;
10434  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10435  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
10436  if (likely(__pyx_t_1)) {
10437  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10438  __Pyx_INCREF(__pyx_t_1);
10439  __Pyx_INCREF(function);
10440  __Pyx_DECREF_SET(__pyx_t_5, function);
10441  }
10442  }
10443  if (!__pyx_t_1) {
10444  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10445  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10446  __Pyx_GOTREF(__pyx_t_3);
10447  } else {
10448  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10449  __Pyx_GOTREF(__pyx_t_6);
10450  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
10451  __Pyx_GIVEREF(__pyx_t_7);
10452  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_7);
10453  __pyx_t_7 = 0;
10454  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10455  __Pyx_GOTREF(__pyx_t_3);
10456  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10457  }
10458  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10459  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gAbs, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10460  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10461 
10462  /* "WaveTools.pyx":446
10463  * dirCheck(self.waveDir,self.vDir)
10464  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10465  * self.Hs = Hs # <<<<<<<<<<<<<<
10466  * self.depth = depth
10467  * self.Tp = Tp
10468  */
10469  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Hs, __pyx_v_Hs) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10470 
10471  /* "WaveTools.pyx":447
10472  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10473  * self.Hs = Hs
10474  * self.depth = depth # <<<<<<<<<<<<<<
10475  * self.Tp = Tp
10476  * self.fp = 1./Tp
10477  */
10478  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth, __pyx_v_depth) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10479 
10480  /* "WaveTools.pyx":448
10481  * self.Hs = Hs
10482  * self.depth = depth
10483  * self.Tp = Tp # <<<<<<<<<<<<<<
10484  * self.fp = 1./Tp
10485  * self.bandFactor = bandFactor
10486  */
10487  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Tp, __pyx_v_Tp) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10488 
10489  /* "WaveTools.pyx":449
10490  * self.depth = depth
10491  * self.Tp = Tp
10492  * self.fp = 1./Tp # <<<<<<<<<<<<<<
10493  * self.bandFactor = bandFactor
10494  * self.N = N
10495  */
10496  __pyx_t_3 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_v_Tp, 1., 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10497  __Pyx_GOTREF(__pyx_t_3);
10498  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fp, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10499  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10500 
10501  /* "WaveTools.pyx":450
10502  * self.Tp = Tp
10503  * self.fp = 1./Tp
10504  * self.bandFactor = bandFactor # <<<<<<<<<<<<<<
10505  * self.N = N
10506  * self.mwl = mwl
10507  */
10508  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bandFactor, __pyx_v_bandFactor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10509 
10510  /* "WaveTools.pyx":451
10511  * self.fp = 1./Tp
10512  * self.bandFactor = bandFactor
10513  * self.N = N # <<<<<<<<<<<<<<
10514  * self.mwl = mwl
10515  * self.fmax = self.bandFactor*self.fp
10516  */
10517  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_N, __pyx_v_N) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10518 
10519  /* "WaveTools.pyx":452
10520  * self.bandFactor = bandFactor
10521  * self.N = N
10522  * self.mwl = mwl # <<<<<<<<<<<<<<
10523  * self.fmax = self.bandFactor*self.fp
10524  * self.fmin = self.fp/self.bandFactor
10525  */
10526  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10527 
10528  /* "WaveTools.pyx":453
10529  * self.N = N
10530  * self.mwl = mwl
10531  * self.fmax = self.bandFactor*self.fp # <<<<<<<<<<<<<<
10532  * self.fmin = self.fp/self.bandFactor
10533  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10534  */
10535  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bandFactor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10536  __Pyx_GOTREF(__pyx_t_3);
10537  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10538  __Pyx_GOTREF(__pyx_t_5);
10539  __pyx_t_6 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10540  __Pyx_GOTREF(__pyx_t_6);
10541  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10542  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10543  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fmax, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10544  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10545 
10546  /* "WaveTools.pyx":454
10547  * self.mwl = mwl
10548  * self.fmax = self.bandFactor*self.fp
10549  * self.fmin = self.fp/self.bandFactor # <<<<<<<<<<<<<<
10550  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10551  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10552  */
10553  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10554  __Pyx_GOTREF(__pyx_t_6);
10555  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bandFactor); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10556  __Pyx_GOTREF(__pyx_t_5);
10557  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10558  __Pyx_GOTREF(__pyx_t_3);
10559  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10560  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10561  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fmin, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10562  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10563 
10564  /* "WaveTools.pyx":455
10565  * self.fmax = self.bandFactor*self.fp
10566  * self.fmin = self.fp/self.bandFactor
10567  * self.df = (self.fmax-self.fmin)/float(self.N-1) # <<<<<<<<<<<<<<
10568  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10569  * self.omega = 2.*pi*self.fi
10570  */
10571  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmax); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10572  __Pyx_GOTREF(__pyx_t_3);
10573  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmin); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10574  __Pyx_GOTREF(__pyx_t_5);
10575  __pyx_t_6 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10576  __Pyx_GOTREF(__pyx_t_6);
10577  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10578  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10579  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10580  __Pyx_GOTREF(__pyx_t_5);
10581  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10582  __Pyx_GOTREF(__pyx_t_3);
10583  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10584  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_t_3); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10585  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10586  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10587  __Pyx_GOTREF(__pyx_t_3);
10588  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10589  __Pyx_GOTREF(__pyx_t_5);
10590  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10591  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10592  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_df, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10593  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10594 
10595  /* "WaveTools.pyx":456
10596  * self.fmin = self.fp/self.bandFactor
10597  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10598  * self.fi = np.linspace(self.fmin,self.fmax,self.N) # <<<<<<<<<<<<<<
10599  * self.omega = 2.*pi*self.fi
10600  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10601  */
10602  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10603  __Pyx_GOTREF(__pyx_t_3);
10604  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10605  __Pyx_GOTREF(__pyx_t_6);
10606  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10607  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10608  __Pyx_GOTREF(__pyx_t_3);
10609  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmax); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10610  __Pyx_GOTREF(__pyx_t_7);
10611  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10612  __Pyx_GOTREF(__pyx_t_1);
10613  __pyx_t_2 = NULL;
10614  __pyx_t_4 = 0;
10615  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
10616  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
10617  if (likely(__pyx_t_2)) {
10618  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10619  __Pyx_INCREF(__pyx_t_2);
10620  __Pyx_INCREF(function);
10621  __Pyx_DECREF_SET(__pyx_t_6, function);
10622  __pyx_t_4 = 1;
10623  }
10624  }
10625  __pyx_t_9 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10626  __Pyx_GOTREF(__pyx_t_9);
10627  if (__pyx_t_2) {
10628  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
10629  }
10630  __Pyx_GIVEREF(__pyx_t_3);
10631  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_t_3);
10632  __Pyx_GIVEREF(__pyx_t_7);
10633  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_7);
10634  __Pyx_GIVEREF(__pyx_t_1);
10635  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_t_1);
10636  __pyx_t_3 = 0;
10637  __pyx_t_7 = 0;
10638  __pyx_t_1 = 0;
10639  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10640  __Pyx_GOTREF(__pyx_t_5);
10641  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10642  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10643  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fi, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10644  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10645 
10646  /* "WaveTools.pyx":457
10647  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10648  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10649  * self.omega = 2.*pi*self.fi # <<<<<<<<<<<<<<
10650  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10651  * if phi == None:
10652  */
10653  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10654  __Pyx_GOTREF(__pyx_t_5);
10655  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10656  __Pyx_GOTREF(__pyx_t_6);
10657  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10658  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10659  __Pyx_GOTREF(__pyx_t_5);
10660  __pyx_t_9 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10661  __Pyx_GOTREF(__pyx_t_9);
10662  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10663  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10664  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omega, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10665  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10666 
10667  /* "WaveTools.pyx":458
10668  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10669  * self.omega = 2.*pi*self.fi
10670  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
10671  * if phi == None:
10672  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10673  */
10674  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10675  __Pyx_GOTREF(__pyx_t_9);
10676  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10677  __Pyx_GOTREF(__pyx_t_5);
10678  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10679  __Pyx_GOTREF(__pyx_t_6);
10680  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10681  __Pyx_GOTREF(__pyx_t_1);
10682  __Pyx_GIVEREF(__pyx_t_5);
10683  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
10684  __Pyx_GIVEREF(__pyx_t_6);
10685  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
10686  __pyx_t_5 = 0;
10687  __pyx_t_6 = 0;
10688  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10689  __Pyx_GOTREF(__pyx_t_6);
10690  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10691  __Pyx_GOTREF(__pyx_t_5);
10692  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_g, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10693  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10694  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10695  __Pyx_GOTREF(__pyx_t_5);
10696  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10697  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10698  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10699  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ki, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10700  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10701 
10702  /* "WaveTools.pyx":459
10703  * self.omega = 2.*pi*self.fi
10704  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10705  * if phi == None: # <<<<<<<<<<<<<<
10706  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10707  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10708  */
10709  __pyx_t_5 = PyObject_RichCompare(__pyx_v_phi, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10710  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10711  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10712  if (__pyx_t_10) {
10713 
10714  /* "WaveTools.pyx":460
10715  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10716  * if phi == None:
10717  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0]) # <<<<<<<<<<<<<<
10718  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10719  * else:
10720  */
10721  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10722  __Pyx_GOTREF(__pyx_t_5);
10723  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10724  __Pyx_GOTREF(__pyx_t_6);
10725  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10726  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10727  __Pyx_GOTREF(__pyx_t_1);
10728  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10729  __Pyx_GOTREF(__pyx_t_9);
10730  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10731  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10732  __Pyx_GOTREF(__pyx_t_1);
10733  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10734  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10735  __Pyx_GOTREF(__pyx_t_9);
10736  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10737  __Pyx_GOTREF(__pyx_t_7);
10738  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10739  __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10740  __Pyx_GOTREF(__pyx_t_9);
10741  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10742  __pyx_t_7 = NULL;
10743  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
10744  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
10745  if (likely(__pyx_t_7)) {
10746  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
10747  __Pyx_INCREF(__pyx_t_7);
10748  __Pyx_INCREF(function);
10749  __Pyx_DECREF_SET(__pyx_t_1, function);
10750  }
10751  }
10752  if (!__pyx_t_7) {
10753  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10754  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10755  __Pyx_GOTREF(__pyx_t_5);
10756  } else {
10757  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10758  __Pyx_GOTREF(__pyx_t_3);
10759  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
10760  __Pyx_GIVEREF(__pyx_t_9);
10761  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_9);
10762  __pyx_t_9 = 0;
10763  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10764  __Pyx_GOTREF(__pyx_t_5);
10765  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10766  }
10767  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10768  __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10769  __Pyx_GOTREF(__pyx_t_1);
10770  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10771  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10772  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10773  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10774 
10775  /* "WaveTools.pyx":461
10776  * if phi == None:
10777  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10778  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves') # <<<<<<<<<<<<<<
10779  * else:
10780  * try:
10781  */
10782  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10783  __Pyx_GOTREF(__pyx_t_1);
10784  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10785  __Pyx_GOTREF(__pyx_t_5);
10786  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10787  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10788 
10789  /* "WaveTools.pyx":459
10790  * self.omega = 2.*pi*self.fi
10791  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10792  * if phi == None: # <<<<<<<<<<<<<<
10793  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10794  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10795  */
10796  goto __pyx_L3;
10797  }
10798 
10799  /* "WaveTools.pyx":463
10800  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10801  * else:
10802  * try: # <<<<<<<<<<<<<<
10803  * self.phi = np.array(phi)
10804  * if self.phi.shape[0] != self.fi.shape[0]:
10805  */
10806  /*else*/ {
10807  {
10808  __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
10809  __Pyx_XGOTREF(__pyx_t_11);
10810  __Pyx_XGOTREF(__pyx_t_12);
10811  __Pyx_XGOTREF(__pyx_t_13);
10812  /*try:*/ {
10813 
10814  /* "WaveTools.pyx":464
10815  * else:
10816  * try:
10817  * self.phi = np.array(phi) # <<<<<<<<<<<<<<
10818  * if self.phi.shape[0] != self.fi.shape[0]:
10819  * logEvent('WaveTools.py: Phase array must have N elements')
10820  */
10821  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10822  __Pyx_GOTREF(__pyx_t_1);
10823  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10824  __Pyx_GOTREF(__pyx_t_6);
10825  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10826  __pyx_t_1 = NULL;
10827  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
10828  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
10829  if (likely(__pyx_t_1)) {
10830  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10831  __Pyx_INCREF(__pyx_t_1);
10832  __Pyx_INCREF(function);
10833  __Pyx_DECREF_SET(__pyx_t_6, function);
10834  }
10835  }
10836  if (!__pyx_t_1) {
10837  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_phi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10838  __Pyx_GOTREF(__pyx_t_5);
10839  } else {
10840  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10841  __Pyx_GOTREF(__pyx_t_3);
10842  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
10843  __Pyx_INCREF(__pyx_v_phi);
10844  __Pyx_GIVEREF(__pyx_v_phi);
10845  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_phi);
10846  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10847  __Pyx_GOTREF(__pyx_t_5);
10848  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10849  }
10850  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10851  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10852  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10853 
10854  /* "WaveTools.pyx":465
10855  * try:
10856  * self.phi = np.array(phi)
10857  * if self.phi.shape[0] != self.fi.shape[0]: # <<<<<<<<<<<<<<
10858  * logEvent('WaveTools.py: Phase array must have N elements')
10859  * sys.exit(1)
10860  */
10861  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10862  __Pyx_GOTREF(__pyx_t_5);
10863  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10864  __Pyx_GOTREF(__pyx_t_6);
10865  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10866  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
10867  __Pyx_GOTREF(__pyx_t_5);
10868  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10869  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10870  __Pyx_GOTREF(__pyx_t_6);
10871  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10872  __Pyx_GOTREF(__pyx_t_3);
10873  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10874  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
10875  __Pyx_GOTREF(__pyx_t_6);
10876  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10877  __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10878  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10879  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10880  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10881  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10882  if (__pyx_t_10) {
10883 
10884  /* "WaveTools.pyx":466
10885  * self.phi = np.array(phi)
10886  * if self.phi.shape[0] != self.fi.shape[0]:
10887  * logEvent('WaveTools.py: Phase array must have N elements') # <<<<<<<<<<<<<<
10888  * sys.exit(1)
10889  *
10890  */
10891  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10892  __Pyx_GOTREF(__pyx_t_3);
10893  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10894  __Pyx_GOTREF(__pyx_t_6);
10895  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10896  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10897 
10898  /* "WaveTools.pyx":467
10899  * if self.phi.shape[0] != self.fi.shape[0]:
10900  * logEvent('WaveTools.py: Phase array must have N elements')
10901  * sys.exit(1) # <<<<<<<<<<<<<<
10902  *
10903  * except:
10904  */
10905  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10906  __Pyx_GOTREF(__pyx_t_6);
10907  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10908  __Pyx_GOTREF(__pyx_t_3);
10909  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10910  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10911  __Pyx_GOTREF(__pyx_t_6);
10912  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10913  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10914 
10915  /* "WaveTools.pyx":465
10916  * try:
10917  * self.phi = np.array(phi)
10918  * if self.phi.shape[0] != self.fi.shape[0]: # <<<<<<<<<<<<<<
10919  * logEvent('WaveTools.py: Phase array must have N elements')
10920  * sys.exit(1)
10921  */
10922  }
10923 
10924  /* "WaveTools.pyx":463
10925  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10926  * else:
10927  * try: # <<<<<<<<<<<<<<
10928  * self.phi = np.array(phi)
10929  * if self.phi.shape[0] != self.fi.shape[0]:
10930  */
10931  }
10932  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
10933  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
10934  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
10935  goto __pyx_L11_try_end;
10936  __pyx_L4_error:;
10937  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10938  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
10939  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
10940  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
10941  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
10942  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10943  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
10944 
10945  /* "WaveTools.pyx":469
10946  * sys.exit(1)
10947  *
10948  * except: # <<<<<<<<<<<<<<
10949  * logEvent('WaveTools.py: phi argument must be an array with N elements')
10950  * sys.exit(1)
10951  */
10952  /*except:*/ {
10953  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10954  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_3, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10955  __Pyx_GOTREF(__pyx_t_6);
10956  __Pyx_GOTREF(__pyx_t_3);
10957  __Pyx_GOTREF(__pyx_t_5);
10958 
10959  /* "WaveTools.pyx":470
10960  *
10961  * except:
10962  * logEvent('WaveTools.py: phi argument must be an array with N elements') # <<<<<<<<<<<<<<
10963  * sys.exit(1)
10964  *
10965  */
10966  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10967  __Pyx_GOTREF(__pyx_t_1);
10968  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10969  __Pyx_GOTREF(__pyx_t_9);
10970  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10971  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10972 
10973  /* "WaveTools.pyx":471
10974  * except:
10975  * logEvent('WaveTools.py: phi argument must be an array with N elements')
10976  * sys.exit(1) # <<<<<<<<<<<<<<
10977  *
10978  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
10979  */
10980  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10981  __Pyx_GOTREF(__pyx_t_9);
10982  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10983  __Pyx_GOTREF(__pyx_t_1);
10984  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10985  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10986  __Pyx_GOTREF(__pyx_t_9);
10987  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10988  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10989  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10990  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10991  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10992  goto __pyx_L5_exception_handled;
10993  }
10994  __pyx_L6_except_error:;
10995 
10996  /* "WaveTools.pyx":463
10997  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10998  * else:
10999  * try: # <<<<<<<<<<<<<<
11000  * self.phi = np.array(phi)
11001  * if self.phi.shape[0] != self.fi.shape[0]:
11002  */
11003  __Pyx_XGIVEREF(__pyx_t_11);
11004  __Pyx_XGIVEREF(__pyx_t_12);
11005  __Pyx_XGIVEREF(__pyx_t_13);
11006  __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
11007  goto __pyx_L1_error;
11008  __pyx_L5_exception_handled:;
11009  __Pyx_XGIVEREF(__pyx_t_11);
11010  __Pyx_XGIVEREF(__pyx_t_12);
11011  __Pyx_XGIVEREF(__pyx_t_13);
11012  __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
11013  __pyx_L11_try_end:;
11014  }
11015  }
11016  __pyx_L3:;
11017 
11018  /* "WaveTools.pyx":474
11019  *
11020  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
11021  * self.fim = reduceToIntervals(self.fi,self.df) # <<<<<<<<<<<<<<
11022  * if (spectral_params == None):
11023  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11024  */
11025  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_reduceToIntervals); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11026  __Pyx_GOTREF(__pyx_t_3);
11027  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11028  __Pyx_GOTREF(__pyx_t_6);
11029  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_df); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11030  __Pyx_GOTREF(__pyx_t_9);
11031  __pyx_t_1 = NULL;
11032  __pyx_t_4 = 0;
11033  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
11034  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
11035  if (likely(__pyx_t_1)) {
11036  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11037  __Pyx_INCREF(__pyx_t_1);
11038  __Pyx_INCREF(function);
11039  __Pyx_DECREF_SET(__pyx_t_3, function);
11040  __pyx_t_4 = 1;
11041  }
11042  }
11043  __pyx_t_7 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11044  __Pyx_GOTREF(__pyx_t_7);
11045  if (__pyx_t_1) {
11046  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
11047  }
11048  __Pyx_GIVEREF(__pyx_t_6);
11049  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_4, __pyx_t_6);
11050  __Pyx_GIVEREF(__pyx_t_9);
11051  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_4, __pyx_t_9);
11052  __pyx_t_6 = 0;
11053  __pyx_t_9 = 0;
11054  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11055  __Pyx_GOTREF(__pyx_t_5);
11056  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11057  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11058  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fim, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11059  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11060 
11061  /* "WaveTools.pyx":475
11062  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
11063  * self.fim = reduceToIntervals(self.fi,self.df)
11064  * if (spectral_params == None): # <<<<<<<<<<<<<<
11065  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11066  * else:
11067  */
11068  __pyx_t_5 = PyObject_RichCompare(__pyx_v_spectral_params, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11069  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11070  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11071  if (__pyx_t_10) {
11072 
11073  /* "WaveTools.pyx":476
11074  * self.fim = reduceToIntervals(self.fi,self.df)
11075  * if (spectral_params == None):
11076  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs) # <<<<<<<<<<<<<<
11077  * else:
11078  * try:
11079  */
11080  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11081  __Pyx_GOTREF(__pyx_t_3);
11082  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11083  __Pyx_GOTREF(__pyx_t_7);
11084  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Hs); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11085  __Pyx_GOTREF(__pyx_t_9);
11086  __Pyx_INCREF(__pyx_v_spec_fun);
11087  __pyx_t_6 = __pyx_v_spec_fun; __pyx_t_1 = NULL;
11088  __pyx_t_4 = 0;
11089  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
11090  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
11091  if (likely(__pyx_t_1)) {
11092  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
11093  __Pyx_INCREF(__pyx_t_1);
11094  __Pyx_INCREF(function);
11095  __Pyx_DECREF_SET(__pyx_t_6, function);
11096  __pyx_t_4 = 1;
11097  }
11098  }
11099  __pyx_t_2 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11100  __Pyx_GOTREF(__pyx_t_2);
11101  if (__pyx_t_1) {
11102  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
11103  }
11104  __Pyx_GIVEREF(__pyx_t_3);
11105  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_t_3);
11106  __Pyx_GIVEREF(__pyx_t_7);
11107  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_t_7);
11108  __Pyx_GIVEREF(__pyx_t_9);
11109  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_4, __pyx_t_9);
11110  __pyx_t_3 = 0;
11111  __pyx_t_7 = 0;
11112  __pyx_t_9 = 0;
11113  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11114  __Pyx_GOTREF(__pyx_t_5);
11115  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11116  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11117  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11118  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11119 
11120  /* "WaveTools.pyx":475
11121  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
11122  * self.fim = reduceToIntervals(self.fi,self.df)
11123  * if (spectral_params == None): # <<<<<<<<<<<<<<
11124  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11125  * else:
11126  */
11127  goto __pyx_L15;
11128  }
11129 
11130  /* "WaveTools.pyx":478
11131  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11132  * else:
11133  * try: # <<<<<<<<<<<<<<
11134  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11135  * except:
11136  */
11137  /*else*/ {
11138  {
11139  __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
11140  __Pyx_XGOTREF(__pyx_t_13);
11141  __Pyx_XGOTREF(__pyx_t_12);
11142  __Pyx_XGOTREF(__pyx_t_11);
11143  /*try:*/ {
11144 
11145  /* "WaveTools.pyx":479
11146  * else:
11147  * try:
11148  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params) # <<<<<<<<<<<<<<
11149  * except:
11150  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
11151  */
11152  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11153  __Pyx_GOTREF(__pyx_t_5);
11154  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11155  __Pyx_GOTREF(__pyx_t_6);
11156  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Hs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11157  __Pyx_GOTREF(__pyx_t_2);
11158  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11159  __Pyx_GOTREF(__pyx_t_9);
11160  __Pyx_GIVEREF(__pyx_t_5);
11161  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
11162  __Pyx_GIVEREF(__pyx_t_6);
11163  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
11164  __Pyx_GIVEREF(__pyx_t_2);
11165  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_2);
11166  __pyx_t_5 = 0;
11167  __pyx_t_6 = 0;
11168  __pyx_t_2 = 0;
11169  if (unlikely(__pyx_v_spectral_params == Py_None)) {
11170  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
11171  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11172  }
11173  if (likely(PyDict_CheckExact(__pyx_v_spectral_params))) {
11174  __pyx_t_2 = PyDict_Copy(__pyx_v_spectral_params); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11175  __Pyx_GOTREF(__pyx_t_2);
11176  } else {
11177  __pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_spectral_params, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11178  __Pyx_GOTREF(__pyx_t_2);
11179  }
11180  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_v_spec_fun, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11181  __Pyx_GOTREF(__pyx_t_6);
11182  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11183  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11184  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11185  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11186 
11187  /* "WaveTools.pyx":478
11188  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11189  * else:
11190  * try: # <<<<<<<<<<<<<<
11191  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11192  * except:
11193  */
11194  }
11195  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
11196  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
11197  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
11198  goto __pyx_L23_try_end;
11199  __pyx_L16_error:;
11200  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
11201  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
11202  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
11203  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
11204  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
11205  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
11206  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
11207 
11208  /* "WaveTools.pyx":480
11209  * try:
11210  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11211  * except: # <<<<<<<<<<<<<<
11212  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
11213  * sys.exit(1)
11214  */
11215  /*except:*/ {
11216  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11217  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11218  __Pyx_GOTREF(__pyx_t_6);
11219  __Pyx_GOTREF(__pyx_t_2);
11220  __Pyx_GOTREF(__pyx_t_9);
11221 
11222  /* "WaveTools.pyx":481
11223  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11224  * except:
11225  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName) # <<<<<<<<<<<<<<
11226  * sys.exit(1)
11227  *
11228  */
11229  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11230  __Pyx_GOTREF(__pyx_t_7);
11231  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Additional_spectral, __pyx_v_spectName); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11232  __Pyx_GOTREF(__pyx_t_3);
11233  __pyx_t_1 = NULL;
11234  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
11235  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
11236  if (likely(__pyx_t_1)) {
11237  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
11238  __Pyx_INCREF(__pyx_t_1);
11239  __Pyx_INCREF(function);
11240  __Pyx_DECREF_SET(__pyx_t_7, function);
11241  }
11242  }
11243  if (!__pyx_t_1) {
11244  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11245  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11246  __Pyx_GOTREF(__pyx_t_5);
11247  } else {
11248  __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11249  __Pyx_GOTREF(__pyx_t_14);
11250  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
11251  __Pyx_GIVEREF(__pyx_t_3);
11252  PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_3);
11253  __pyx_t_3 = 0;
11254  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11255  __Pyx_GOTREF(__pyx_t_5);
11256  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11257  }
11258  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11259  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11260 
11261  /* "WaveTools.pyx":482
11262  * except:
11263  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
11264  * sys.exit(1) # <<<<<<<<<<<<<<
11265  *
11266  *
11267  */
11268  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11269  __Pyx_GOTREF(__pyx_t_5);
11270  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11271  __Pyx_GOTREF(__pyx_t_7);
11272  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11273  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11274  __Pyx_GOTREF(__pyx_t_5);
11275  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11276  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11277  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11278  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11279  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11280  goto __pyx_L17_exception_handled;
11281  }
11282  __pyx_L18_except_error:;
11283 
11284  /* "WaveTools.pyx":478
11285  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11286  * else:
11287  * try: # <<<<<<<<<<<<<<
11288  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11289  * except:
11290  */
11291  __Pyx_XGIVEREF(__pyx_t_13);
11292  __Pyx_XGIVEREF(__pyx_t_12);
11293  __Pyx_XGIVEREF(__pyx_t_11);
11294  __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
11295  goto __pyx_L1_error;
11296  __pyx_L17_exception_handled:;
11297  __Pyx_XGIVEREF(__pyx_t_13);
11298  __Pyx_XGIVEREF(__pyx_t_12);
11299  __Pyx_XGIVEREF(__pyx_t_11);
11300  __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
11301  __pyx_L23_try_end:;
11302  }
11303  }
11304  __pyx_L15:;
11305 
11306  /* "WaveTools.pyx":485
11307  *
11308  *
11309  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,self.fim)) # <<<<<<<<<<<<<<
11310  * self.kDir = np.zeros((len(self.ki),3),)
11311  * for ii in range(3):
11312  */
11313  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11314  __Pyx_GOTREF(__pyx_t_2);
11315  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11316  __Pyx_GOTREF(__pyx_t_6);
11317  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11318  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11319  __Pyx_GOTREF(__pyx_t_5);
11320  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11321  __Pyx_GOTREF(__pyx_t_7);
11322  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11323  __Pyx_GOTREF(__pyx_t_14);
11324  __pyx_t_3 = NULL;
11325  __pyx_t_4 = 0;
11326  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
11327  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
11328  if (likely(__pyx_t_3)) {
11329  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
11330  __Pyx_INCREF(__pyx_t_3);
11331  __Pyx_INCREF(function);
11332  __Pyx_DECREF_SET(__pyx_t_5, function);
11333  __pyx_t_4 = 1;
11334  }
11335  }
11336  __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11337  __Pyx_GOTREF(__pyx_t_1);
11338  if (__pyx_t_3) {
11339  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
11340  }
11341  __Pyx_GIVEREF(__pyx_t_7);
11342  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_7);
11343  __Pyx_GIVEREF(__pyx_t_14);
11344  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_t_14);
11345  __pyx_t_7 = 0;
11346  __pyx_t_14 = 0;
11347  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11348  __Pyx_GOTREF(__pyx_t_2);
11349  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11350  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11351  __pyx_t_5 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11352  __Pyx_GOTREF(__pyx_t_5);
11353  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11354  __pyx_t_2 = NULL;
11355  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
11356  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
11357  if (likely(__pyx_t_2)) {
11358  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
11359  __Pyx_INCREF(__pyx_t_2);
11360  __Pyx_INCREF(function);
11361  __Pyx_DECREF_SET(__pyx_t_6, function);
11362  }
11363  }
11364  if (!__pyx_t_2) {
11365  __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11366  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11367  __Pyx_GOTREF(__pyx_t_9);
11368  } else {
11369  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11370  __Pyx_GOTREF(__pyx_t_1);
11371  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
11372  __Pyx_GIVEREF(__pyx_t_5);
11373  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_5);
11374  __pyx_t_5 = 0;
11375  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11376  __Pyx_GOTREF(__pyx_t_9);
11377  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11378  }
11379  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11380  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ai, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11381  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11382 
11383  /* "WaveTools.pyx":486
11384  *
11385  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,self.fim))
11386  * self.kDir = np.zeros((len(self.ki),3),) # <<<<<<<<<<<<<<
11387  * for ii in range(3):
11388  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11389  */
11390  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11391  __Pyx_GOTREF(__pyx_t_6);
11392  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11393  __Pyx_GOTREF(__pyx_t_1);
11394  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11395  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11396  __Pyx_GOTREF(__pyx_t_6);
11397  __pyx_t_4 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11398  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11399  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11400  __Pyx_GOTREF(__pyx_t_6);
11401  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11402  __Pyx_GOTREF(__pyx_t_5);
11403  __Pyx_GIVEREF(__pyx_t_6);
11404  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
11405  __Pyx_INCREF(__pyx_int_3);
11406  __Pyx_GIVEREF(__pyx_int_3);
11407  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
11408  __pyx_t_6 = 0;
11409  __pyx_t_6 = NULL;
11410  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
11411  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
11412  if (likely(__pyx_t_6)) {
11413  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
11414  __Pyx_INCREF(__pyx_t_6);
11415  __Pyx_INCREF(function);
11416  __Pyx_DECREF_SET(__pyx_t_1, function);
11417  }
11418  }
11419  if (!__pyx_t_6) {
11420  __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11421  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11422  __Pyx_GOTREF(__pyx_t_9);
11423  } else {
11424  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11425  __Pyx_GOTREF(__pyx_t_2);
11426  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL;
11427  __Pyx_GIVEREF(__pyx_t_5);
11428  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
11429  __pyx_t_5 = 0;
11430  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11431  __Pyx_GOTREF(__pyx_t_9);
11432  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11433  }
11434  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11435  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDir, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11436  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11437 
11438  /* "WaveTools.pyx":487
11439  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,self.fim))
11440  * self.kDir = np.zeros((len(self.ki),3),)
11441  * for ii in range(3): # <<<<<<<<<<<<<<
11442  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11443  * def eta(self, x, t):
11444  */
11445  for (__pyx_t_15 = 0; __pyx_t_15 < 3; __pyx_t_15+=1) {
11446  __pyx_v_ii = __pyx_t_15;
11447 
11448  /* "WaveTools.pyx":488
11449  * self.kDir = np.zeros((len(self.ki),3),)
11450  * for ii in range(3):
11451  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii] # <<<<<<<<<<<<<<
11452  * def eta(self, x, t):
11453  * """Free surface displacement
11454  */
11455  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11456  __Pyx_GOTREF(__pyx_t_9);
11457  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_9, 0, 0, NULL, NULL, &__pyx_slice__50, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11458  __Pyx_GOTREF(__pyx_t_1);
11459  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11460  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11461  __Pyx_GOTREF(__pyx_t_9);
11462  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, __pyx_v_ii, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11463  __Pyx_GOTREF(__pyx_t_2);
11464  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11465  __pyx_t_9 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11466  __Pyx_GOTREF(__pyx_t_9);
11467  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11468  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11469  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11470  __Pyx_GOTREF(__pyx_t_2);
11471  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_ii); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11472  __Pyx_GOTREF(__pyx_t_1);
11473  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11474  __Pyx_GOTREF(__pyx_t_5);
11475  __Pyx_INCREF(__pyx_slice__51);
11476  __Pyx_GIVEREF(__pyx_slice__51);
11477  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__51);
11478  __Pyx_GIVEREF(__pyx_t_1);
11479  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
11480  __pyx_t_1 = 0;
11481  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_5, __pyx_t_9) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11482  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11483  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11484  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11485  }
11486 
11487  /* "WaveTools.pyx":426
11488  * """
11489  *
11490  * def __init__(self, # <<<<<<<<<<<<<<
11491  * Tp,
11492  * Hs,
11493  */
11494 
11495  /* function exit code */
11496  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
11497  goto __pyx_L0;
11498  __pyx_L1_error:;
11499  __Pyx_XDECREF(__pyx_t_1);
11500  __Pyx_XDECREF(__pyx_t_2);
11501  __Pyx_XDECREF(__pyx_t_3);
11502  __Pyx_XDECREF(__pyx_t_5);
11503  __Pyx_XDECREF(__pyx_t_6);
11504  __Pyx_XDECREF(__pyx_t_7);
11505  __Pyx_XDECREF(__pyx_t_9);
11506  __Pyx_XDECREF(__pyx_t_14);
11507  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11508  __pyx_r = NULL;
11509  __pyx_L0:;
11510  __Pyx_XDECREF(__pyx_v_validSpectra);
11511  __Pyx_XDECREF(__pyx_v_spec_fun);
11512  __Pyx_XGIVEREF(__pyx_r);
11513  __Pyx_RefNannyFinishContext();
11514  return __pyx_r;
11515 }
11516 
11517 /* "WaveTools.pyx":489
11518  * for ii in range(3):
11519  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11520  * def eta(self, x, t): # <<<<<<<<<<<<<<
11521  * """Free surface displacement
11522  *
11523  */
11524 
11525 /* Python wrapper */
11526 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
11527 static char __pyx_doc_9WaveTools_11RandomWaves_2eta[] = "RandomWaves.eta(self, x, t)\nFree surface displacement\n\n :param x: floating point x coordinate\n :param t: time";
11528 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_2eta};
11529 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11530  PyObject *__pyx_v_self = 0;
11531  PyObject *__pyx_v_x = 0;
11532  PyObject *__pyx_v_t = 0;
11533  int __pyx_lineno = 0;
11534  const char *__pyx_filename = NULL;
11535  int __pyx_clineno = 0;
11536  PyObject *__pyx_r = 0;
11537  __Pyx_RefNannyDeclarations
11538  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
11539  {
11540  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
11541  PyObject* values[3] = {0,0,0};
11542  if (unlikely(__pyx_kwds)) {
11543  Py_ssize_t kw_args;
11544  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11545  switch (pos_args) {
11546  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11547  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11548  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11549  case 0: break;
11550  default: goto __pyx_L5_argtuple_error;
11551  }
11552  kw_args = PyDict_Size(__pyx_kwds);
11553  switch (pos_args) {
11554  case 0:
11555  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
11556  else goto __pyx_L5_argtuple_error;
11557  case 1:
11558  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
11559  else {
11560  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11561  }
11562  case 2:
11563  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
11564  else {
11565  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11566  }
11567  }
11568  if (unlikely(kw_args > 0)) {
11569  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11570  }
11571  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
11572  goto __pyx_L5_argtuple_error;
11573  } else {
11574  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11575  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11576  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11577  }
11578  __pyx_v_self = values[0];
11579  __pyx_v_x = values[1];
11580  __pyx_v_t = values[2];
11581  }
11582  goto __pyx_L4_argument_unpacking_done;
11583  __pyx_L5_argtuple_error:;
11584  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11585  __pyx_L3_error:;
11586  __Pyx_AddTraceback("WaveTools.RandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
11587  __Pyx_RefNannyFinishContext();
11588  return NULL;
11589  __pyx_L4_argument_unpacking_done:;
11590  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
11591 
11592  /* function exit code */
11593  __Pyx_RefNannyFinishContext();
11594  return __pyx_r;
11595 }
11596 
11597 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
11598  PyObject *__pyx_v_Eta = NULL;
11599  PyObject *__pyx_v_ii = NULL;
11600  PyObject *__pyx_r = NULL;
11601  __Pyx_RefNannyDeclarations
11602  PyObject *__pyx_t_1 = NULL;
11603  PyObject *__pyx_t_2 = NULL;
11604  Py_ssize_t __pyx_t_3;
11605  PyObject *(*__pyx_t_4)(PyObject *);
11606  PyObject *__pyx_t_5 = NULL;
11607  PyObject *__pyx_t_6 = NULL;
11608  PyObject *__pyx_t_7 = NULL;
11609  PyObject *__pyx_t_8 = NULL;
11610  PyObject *__pyx_t_9 = NULL;
11611  PyObject *__pyx_t_10 = NULL;
11612  Py_ssize_t __pyx_t_11;
11613  PyObject *__pyx_t_12 = NULL;
11614  int __pyx_lineno = 0;
11615  const char *__pyx_filename = NULL;
11616  int __pyx_clineno = 0;
11617  __Pyx_RefNannySetupContext("eta", 0);
11618 
11619  /* "WaveTools.pyx":494
11620  * :param x: floating point x coordinate
11621  * :param t: time"""
11622  * Eta=0. # <<<<<<<<<<<<<<
11623  * for ii in range(self.N):
11624  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11625  */
11626  __Pyx_INCREF(__pyx_float_0_);
11627  __pyx_v_Eta = __pyx_float_0_;
11628 
11629  /* "WaveTools.pyx":495
11630  * :param t: time"""
11631  * Eta=0.
11632  * for ii in range(self.N): # <<<<<<<<<<<<<<
11633  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11634  * return Eta
11635  */
11636  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11637  __Pyx_GOTREF(__pyx_t_1);
11638  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11639  __Pyx_GOTREF(__pyx_t_2);
11640  __Pyx_GIVEREF(__pyx_t_1);
11641  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
11642  __pyx_t_1 = 0;
11643  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11644  __Pyx_GOTREF(__pyx_t_1);
11645  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11646  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
11647  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
11648  __pyx_t_4 = NULL;
11649  } else {
11650  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11651  __Pyx_GOTREF(__pyx_t_2);
11652  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11653  }
11654  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11655  for (;;) {
11656  if (likely(!__pyx_t_4)) {
11657  if (likely(PyList_CheckExact(__pyx_t_2))) {
11658  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
11659  #if CYTHON_COMPILING_IN_CPYTHON
11660  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11661  #else
11662  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11663  __Pyx_GOTREF(__pyx_t_1);
11664  #endif
11665  } else {
11666  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
11667  #if CYTHON_COMPILING_IN_CPYTHON
11668  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11669  #else
11670  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11671  __Pyx_GOTREF(__pyx_t_1);
11672  #endif
11673  }
11674  } else {
11675  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
11676  if (unlikely(!__pyx_t_1)) {
11677  PyObject* exc_type = PyErr_Occurred();
11678  if (exc_type) {
11679  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
11680  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11681  }
11682  break;
11683  }
11684  __Pyx_GOTREF(__pyx_t_1);
11685  }
11686  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
11687  __pyx_t_1 = 0;
11688 
11689  /* "WaveTools.pyx":496
11690  * Eta=0.
11691  * for ii in range(self.N):
11692  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii]) # <<<<<<<<<<<<<<
11693  * return Eta
11694  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
11695  */
11696  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11697  __Pyx_GOTREF(__pyx_t_5);
11698  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11699  __Pyx_GOTREF(__pyx_t_6);
11700  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11701  __Pyx_GOTREF(__pyx_t_7);
11702  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11703  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11704  __Pyx_GOTREF(__pyx_t_6);
11705  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11706  __Pyx_GOTREF(__pyx_t_8);
11707  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11708  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11709  __Pyx_GOTREF(__pyx_t_6);
11710  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11711  __Pyx_GOTREF(__pyx_t_9);
11712  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11713  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11714  __Pyx_GOTREF(__pyx_t_6);
11715  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11716  __Pyx_GOTREF(__pyx_t_10);
11717  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11718  __pyx_t_6 = NULL;
11719  __pyx_t_11 = 0;
11720  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
11721  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
11722  if (likely(__pyx_t_6)) {
11723  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
11724  __Pyx_INCREF(__pyx_t_6);
11725  __Pyx_INCREF(function);
11726  __Pyx_DECREF_SET(__pyx_t_5, function);
11727  __pyx_t_11 = 1;
11728  }
11729  }
11730  __pyx_t_12 = PyTuple_New(6+__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11731  __Pyx_GOTREF(__pyx_t_12);
11732  if (__pyx_t_6) {
11733  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
11734  }
11735  __Pyx_INCREF(__pyx_v_x);
11736  __Pyx_GIVEREF(__pyx_v_x);
11737  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_v_x);
11738  __Pyx_INCREF(__pyx_v_t);
11739  __Pyx_GIVEREF(__pyx_v_t);
11740  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_v_t);
11741  __Pyx_GIVEREF(__pyx_t_7);
11742  PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_11, __pyx_t_7);
11743  __Pyx_GIVEREF(__pyx_t_8);
11744  PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_11, __pyx_t_8);
11745  __Pyx_GIVEREF(__pyx_t_9);
11746  PyTuple_SET_ITEM(__pyx_t_12, 4+__pyx_t_11, __pyx_t_9);
11747  __Pyx_GIVEREF(__pyx_t_10);
11748  PyTuple_SET_ITEM(__pyx_t_12, 5+__pyx_t_11, __pyx_t_10);
11749  __pyx_t_7 = 0;
11750  __pyx_t_8 = 0;
11751  __pyx_t_9 = 0;
11752  __pyx_t_10 = 0;
11753  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11754  __Pyx_GOTREF(__pyx_t_1);
11755  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
11756  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11757  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11758  __Pyx_GOTREF(__pyx_t_5);
11759  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11760  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_5);
11761  __pyx_t_5 = 0;
11762 
11763  /* "WaveTools.pyx":495
11764  * :param t: time"""
11765  * Eta=0.
11766  * for ii in range(self.N): # <<<<<<<<<<<<<<
11767  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11768  * return Eta
11769  */
11770  }
11771  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11772 
11773  /* "WaveTools.pyx":497
11774  * for ii in range(self.N):
11775  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11776  * return Eta # <<<<<<<<<<<<<<
11777  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
11778  *
11779  */
11780  __Pyx_XDECREF(__pyx_r);
11781  __Pyx_INCREF(__pyx_v_Eta);
11782  __pyx_r = __pyx_v_Eta;
11783  goto __pyx_L0;
11784 
11785  /* "WaveTools.pyx":489
11786  * for ii in range(3):
11787  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11788  * def eta(self, x, t): # <<<<<<<<<<<<<<
11789  * """Free surface displacement
11790  *
11791  */
11792 
11793  /* function exit code */
11794  __pyx_L1_error:;
11795  __Pyx_XDECREF(__pyx_t_1);
11796  __Pyx_XDECREF(__pyx_t_2);
11797  __Pyx_XDECREF(__pyx_t_5);
11798  __Pyx_XDECREF(__pyx_t_6);
11799  __Pyx_XDECREF(__pyx_t_7);
11800  __Pyx_XDECREF(__pyx_t_8);
11801  __Pyx_XDECREF(__pyx_t_9);
11802  __Pyx_XDECREF(__pyx_t_10);
11803  __Pyx_XDECREF(__pyx_t_12);
11804  __Pyx_AddTraceback("WaveTools.RandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
11805  __pyx_r = NULL;
11806  __pyx_L0:;
11807  __Pyx_XDECREF(__pyx_v_Eta);
11808  __Pyx_XDECREF(__pyx_v_ii);
11809  __Pyx_XGIVEREF(__pyx_r);
11810  __Pyx_RefNannyFinishContext();
11811  return __pyx_r;
11812 }
11813 
11814 /* "WaveTools.pyx":500
11815  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
11816  *
11817  * def u(self, x, t): # <<<<<<<<<<<<<<
11818  * """x-component of velocity
11819  *
11820  */
11821 
11822 /* Python wrapper */
11823 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
11824 static char __pyx_doc_9WaveTools_11RandomWaves_4u[] = "RandomWaves.u(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
11825 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_4u};
11826 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11827  PyObject *__pyx_v_self = 0;
11828  PyObject *__pyx_v_x = 0;
11829  PyObject *__pyx_v_t = 0;
11830  int __pyx_lineno = 0;
11831  const char *__pyx_filename = NULL;
11832  int __pyx_clineno = 0;
11833  PyObject *__pyx_r = 0;
11834  __Pyx_RefNannyDeclarations
11835  __Pyx_RefNannySetupContext("u (wrapper)", 0);
11836  {
11837  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
11838  PyObject* values[3] = {0,0,0};
11839  if (unlikely(__pyx_kwds)) {
11840  Py_ssize_t kw_args;
11841  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11842  switch (pos_args) {
11843  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11844  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11845  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11846  case 0: break;
11847  default: goto __pyx_L5_argtuple_error;
11848  }
11849  kw_args = PyDict_Size(__pyx_kwds);
11850  switch (pos_args) {
11851  case 0:
11852  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
11853  else goto __pyx_L5_argtuple_error;
11854  case 1:
11855  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
11856  else {
11857  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11858  }
11859  case 2:
11860  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
11861  else {
11862  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11863  }
11864  }
11865  if (unlikely(kw_args > 0)) {
11866  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11867  }
11868  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
11869  goto __pyx_L5_argtuple_error;
11870  } else {
11871  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11872  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11873  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11874  }
11875  __pyx_v_self = values[0];
11876  __pyx_v_x = values[1];
11877  __pyx_v_t = values[2];
11878  }
11879  goto __pyx_L4_argument_unpacking_done;
11880  __pyx_L5_argtuple_error:;
11881  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11882  __pyx_L3_error:;
11883  __Pyx_AddTraceback("WaveTools.RandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
11884  __Pyx_RefNannyFinishContext();
11885  return NULL;
11886  __pyx_L4_argument_unpacking_done:;
11887  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
11888 
11889  /* function exit code */
11890  __Pyx_RefNannyFinishContext();
11891  return __pyx_r;
11892 }
11893 
11894 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
11895  PyObject *__pyx_v_U = NULL;
11896  PyObject *__pyx_v_ii = NULL;
11897  PyObject *__pyx_r = NULL;
11898  __Pyx_RefNannyDeclarations
11899  PyObject *__pyx_t_1 = NULL;
11900  PyObject *__pyx_t_2 = NULL;
11901  Py_ssize_t __pyx_t_3;
11902  PyObject *(*__pyx_t_4)(PyObject *);
11903  PyObject *__pyx_t_5 = NULL;
11904  PyObject *__pyx_t_6 = NULL;
11905  PyObject *__pyx_t_7 = NULL;
11906  PyObject *__pyx_t_8 = NULL;
11907  PyObject *__pyx_t_9 = NULL;
11908  PyObject *__pyx_t_10 = NULL;
11909  PyObject *__pyx_t_11 = NULL;
11910  PyObject *__pyx_t_12 = NULL;
11911  PyObject *__pyx_t_13 = NULL;
11912  PyObject *__pyx_t_14 = NULL;
11913  PyObject *__pyx_t_15 = NULL;
11914  Py_ssize_t __pyx_t_16;
11915  PyObject *__pyx_t_17 = NULL;
11916  int __pyx_lineno = 0;
11917  const char *__pyx_filename = NULL;
11918  int __pyx_clineno = 0;
11919  __Pyx_RefNannySetupContext("u", 0);
11920 
11921  /* "WaveTools.pyx":507
11922  * :param t: time
11923  * """
11924  * U=0. # <<<<<<<<<<<<<<
11925  * for ii in range(self.N):
11926  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
11927  */
11928  __Pyx_INCREF(__pyx_float_0_);
11929  __pyx_v_U = __pyx_float_0_;
11930 
11931  /* "WaveTools.pyx":508
11932  * """
11933  * U=0.
11934  * for ii in range(self.N): # <<<<<<<<<<<<<<
11935  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
11936  * return U
11937  */
11938  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11939  __Pyx_GOTREF(__pyx_t_1);
11940  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11941  __Pyx_GOTREF(__pyx_t_2);
11942  __Pyx_GIVEREF(__pyx_t_1);
11943  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
11944  __pyx_t_1 = 0;
11945  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11946  __Pyx_GOTREF(__pyx_t_1);
11947  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11948  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
11949  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
11950  __pyx_t_4 = NULL;
11951  } else {
11952  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11953  __Pyx_GOTREF(__pyx_t_2);
11954  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11955  }
11956  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11957  for (;;) {
11958  if (likely(!__pyx_t_4)) {
11959  if (likely(PyList_CheckExact(__pyx_t_2))) {
11960  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
11961  #if CYTHON_COMPILING_IN_CPYTHON
11962  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11963  #else
11964  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11965  __Pyx_GOTREF(__pyx_t_1);
11966  #endif
11967  } else {
11968  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
11969  #if CYTHON_COMPILING_IN_CPYTHON
11970  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11971  #else
11972  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11973  __Pyx_GOTREF(__pyx_t_1);
11974  #endif
11975  }
11976  } else {
11977  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
11978  if (unlikely(!__pyx_t_1)) {
11979  PyObject* exc_type = PyErr_Occurred();
11980  if (exc_type) {
11981  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
11982  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11983  }
11984  break;
11985  }
11986  __Pyx_GOTREF(__pyx_t_1);
11987  }
11988  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
11989  __pyx_t_1 = 0;
11990 
11991  /* "WaveTools.pyx":509
11992  * U=0.
11993  * for ii in range(self.N):
11994  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
11995  * return U
11996  *
11997  */
11998  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11999  __Pyx_GOTREF(__pyx_t_5);
12000  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12001  __Pyx_GOTREF(__pyx_t_6);
12002  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
12003  __Pyx_GOTREF(__pyx_t_7);
12004  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12005  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12006  __Pyx_GOTREF(__pyx_t_6);
12007  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
12008  __Pyx_GOTREF(__pyx_t_8);
12009  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12010  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12011  __Pyx_GOTREF(__pyx_t_6);
12012  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
12013  __Pyx_GOTREF(__pyx_t_9);
12014  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12015  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12016  __Pyx_GOTREF(__pyx_t_6);
12017  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
12018  __Pyx_GOTREF(__pyx_t_10);
12019  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12020  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12021  __Pyx_GOTREF(__pyx_t_6);
12022  __pyx_t_11 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
12023  __Pyx_GOTREF(__pyx_t_11);
12024  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12025  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12026  __Pyx_GOTREF(__pyx_t_6);
12027  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12028  __Pyx_GOTREF(__pyx_t_12);
12029  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12030  __Pyx_GOTREF(__pyx_t_13);
12031  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12032  __Pyx_GOTREF(__pyx_t_14);
12033  __pyx_t_15 = NULL;
12034  __pyx_t_16 = 0;
12035  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
12036  __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
12037  if (likely(__pyx_t_15)) {
12038  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
12039  __Pyx_INCREF(__pyx_t_15);
12040  __Pyx_INCREF(function);
12041  __Pyx_DECREF_SET(__pyx_t_5, function);
12042  __pyx_t_16 = 1;
12043  }
12044  }
12045  __pyx_t_17 = PyTuple_New(11+__pyx_t_16); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12046  __Pyx_GOTREF(__pyx_t_17);
12047  if (__pyx_t_15) {
12048  __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __pyx_t_15 = NULL;
12049  }
12050  __Pyx_INCREF(__pyx_v_x);
12051  __Pyx_GIVEREF(__pyx_v_x);
12052  PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_v_x);
12053  __Pyx_INCREF(__pyx_v_t);
12054  __Pyx_GIVEREF(__pyx_v_t);
12055  PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_v_t);
12056  __Pyx_GIVEREF(__pyx_t_7);
12057  PyTuple_SET_ITEM(__pyx_t_17, 2+__pyx_t_16, __pyx_t_7);
12058  __Pyx_GIVEREF(__pyx_t_8);
12059  PyTuple_SET_ITEM(__pyx_t_17, 3+__pyx_t_16, __pyx_t_8);
12060  __Pyx_GIVEREF(__pyx_t_9);
12061  PyTuple_SET_ITEM(__pyx_t_17, 4+__pyx_t_16, __pyx_t_9);
12062  __Pyx_GIVEREF(__pyx_t_10);
12063  PyTuple_SET_ITEM(__pyx_t_17, 5+__pyx_t_16, __pyx_t_10);
12064  __Pyx_GIVEREF(__pyx_t_11);
12065  PyTuple_SET_ITEM(__pyx_t_17, 6+__pyx_t_16, __pyx_t_11);
12066  __Pyx_GIVEREF(__pyx_t_6);
12067  PyTuple_SET_ITEM(__pyx_t_17, 7+__pyx_t_16, __pyx_t_6);
12068  __Pyx_GIVEREF(__pyx_t_12);
12069  PyTuple_SET_ITEM(__pyx_t_17, 8+__pyx_t_16, __pyx_t_12);
12070  __Pyx_GIVEREF(__pyx_t_13);
12071  PyTuple_SET_ITEM(__pyx_t_17, 9+__pyx_t_16, __pyx_t_13);
12072  __Pyx_GIVEREF(__pyx_t_14);
12073  PyTuple_SET_ITEM(__pyx_t_17, 10+__pyx_t_16, __pyx_t_14);
12074  __pyx_t_7 = 0;
12075  __pyx_t_8 = 0;
12076  __pyx_t_9 = 0;
12077  __pyx_t_10 = 0;
12078  __pyx_t_11 = 0;
12079  __pyx_t_6 = 0;
12080  __pyx_t_12 = 0;
12081  __pyx_t_13 = 0;
12082  __pyx_t_14 = 0;
12083  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12084  __Pyx_GOTREF(__pyx_t_1);
12085  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
12086  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
12087  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12088  __Pyx_GOTREF(__pyx_t_5);
12089  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12090  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_5);
12091  __pyx_t_5 = 0;
12092 
12093  /* "WaveTools.pyx":508
12094  * """
12095  * U=0.
12096  * for ii in range(self.N): # <<<<<<<<<<<<<<
12097  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
12098  * return U
12099  */
12100  }
12101  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12102 
12103  /* "WaveTools.pyx":510
12104  * for ii in range(self.N):
12105  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
12106  * return U # <<<<<<<<<<<<<<
12107  *
12108  * class MultiSpectraRandomWaves(RandomWaves):
12109  */
12110  __Pyx_XDECREF(__pyx_r);
12111  __Pyx_INCREF(__pyx_v_U);
12112  __pyx_r = __pyx_v_U;
12113  goto __pyx_L0;
12114 
12115  /* "WaveTools.pyx":500
12116  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
12117  *
12118  * def u(self, x, t): # <<<<<<<<<<<<<<
12119  * """x-component of velocity
12120  *
12121  */
12122 
12123  /* function exit code */
12124  __pyx_L1_error:;
12125  __Pyx_XDECREF(__pyx_t_1);
12126  __Pyx_XDECREF(__pyx_t_2);
12127  __Pyx_XDECREF(__pyx_t_5);
12128  __Pyx_XDECREF(__pyx_t_6);
12129  __Pyx_XDECREF(__pyx_t_7);
12130  __Pyx_XDECREF(__pyx_t_8);
12131  __Pyx_XDECREF(__pyx_t_9);
12132  __Pyx_XDECREF(__pyx_t_10);
12133  __Pyx_XDECREF(__pyx_t_11);
12134  __Pyx_XDECREF(__pyx_t_12);
12135  __Pyx_XDECREF(__pyx_t_13);
12136  __Pyx_XDECREF(__pyx_t_14);
12137  __Pyx_XDECREF(__pyx_t_15);
12138  __Pyx_XDECREF(__pyx_t_17);
12139  __Pyx_AddTraceback("WaveTools.RandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
12140  __pyx_r = NULL;
12141  __pyx_L0:;
12142  __Pyx_XDECREF(__pyx_v_U);
12143  __Pyx_XDECREF(__pyx_v_ii);
12144  __Pyx_XGIVEREF(__pyx_r);
12145  __Pyx_RefNannyFinishContext();
12146  return __pyx_r;
12147 }
12148 
12149 /* "WaveTools.pyx":517
12150  * :param Nspectra, number of spectra
12151  * """
12152  * def __init__(self, # <<<<<<<<<<<<<<
12153  * Nspectra,
12154  * Tp, # np array with
12155  */
12156 
12157 /* Python wrapper */
12158 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12159 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves___init__[] = "MultiSpectraRandomWaves.__init__(self, Nspectra, Tp, Hs, mwl, depth, waveDir, g, N, bandFactor, spectName, spectral_params, phi)";
12160 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves___init__};
12161 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
12162  PyObject *__pyx_v_self = 0;
12163  PyObject *__pyx_v_Nspectra = 0;
12164  PyObject *__pyx_v_Tp = 0;
12165  PyObject *__pyx_v_Hs = 0;
12166  PyObject *__pyx_v_mwl = 0;
12167  PyObject *__pyx_v_depth = 0;
12168  PyObject *__pyx_v_waveDir = 0;
12169  PyObject *__pyx_v_g = 0;
12170  PyObject *__pyx_v_N = 0;
12171  PyObject *__pyx_v_bandFactor = 0;
12172  PyObject *__pyx_v_spectName = 0;
12173  PyObject *__pyx_v_spectral_params = 0;
12174  PyObject *__pyx_v_phi = 0;
12175  int __pyx_lineno = 0;
12176  const char *__pyx_filename = NULL;
12177  int __pyx_clineno = 0;
12178  PyObject *__pyx_r = 0;
12179  __Pyx_RefNannyDeclarations
12180  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
12181  {
12182  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Nspectra,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,0};
12183  PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
12184  if (unlikely(__pyx_kwds)) {
12185  Py_ssize_t kw_args;
12186  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
12187  switch (pos_args) {
12188  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
12189  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
12190  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
12191  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
12192  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
12193  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
12194  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
12195  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
12196  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
12197  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
12198  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12199  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12200  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12201  case 0: break;
12202  default: goto __pyx_L5_argtuple_error;
12203  }
12204  kw_args = PyDict_Size(__pyx_kwds);
12205  switch (pos_args) {
12206  case 0:
12207  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
12208  else goto __pyx_L5_argtuple_error;
12209  case 1:
12210  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Nspectra)) != 0)) kw_args--;
12211  else {
12212  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12213  }
12214  case 2:
12215  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
12216  else {
12217  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12218  }
12219  case 3:
12220  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
12221  else {
12222  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12223  }
12224  case 4:
12225  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
12226  else {
12227  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12228  }
12229  case 5:
12230  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
12231  else {
12232  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12233  }
12234  case 6:
12235  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
12236  else {
12237  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12238  }
12239  case 7:
12240  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
12241  else {
12242  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12243  }
12244  case 8:
12245  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
12246  else {
12247  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12248  }
12249  case 9:
12250  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
12251  else {
12252  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12253  }
12254  case 10:
12255  if (likely((values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
12256  else {
12257  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12258  }
12259  case 11:
12260  if (likely((values[11] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectral_params)) != 0)) kw_args--;
12261  else {
12262  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 11); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12263  }
12264  case 12:
12265  if (likely((values[12] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
12266  else {
12267  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 12); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12268  }
12269  }
12270  if (unlikely(kw_args > 0)) {
12271  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12272  }
12273  } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
12274  goto __pyx_L5_argtuple_error;
12275  } else {
12276  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12277  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12278  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12279  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
12280  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
12281  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
12282  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
12283  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
12284  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
12285  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
12286  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
12287  values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
12288  values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
12289  }
12290  __pyx_v_self = values[0];
12291  __pyx_v_Nspectra = values[1];
12292  __pyx_v_Tp = values[2];
12293  __pyx_v_Hs = values[3];
12294  __pyx_v_mwl = values[4];
12295  __pyx_v_depth = values[5];
12296  __pyx_v_waveDir = values[6];
12297  __pyx_v_g = values[7];
12298  __pyx_v_N = values[8];
12299  __pyx_v_bandFactor = values[9];
12300  __pyx_v_spectName = values[10];
12301  __pyx_v_spectral_params = values[11];
12302  __pyx_v_phi = values[12];
12303  }
12304  goto __pyx_L4_argument_unpacking_done;
12305  __pyx_L5_argtuple_error:;
12306  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12307  __pyx_L3_error:;
12308  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12309  __Pyx_RefNannyFinishContext();
12310  return NULL;
12311  __pyx_L4_argument_unpacking_done:;
12312  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_Nspectra, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi);
12313 
12314  /* function exit code */
12315  __Pyx_RefNannyFinishContext();
12316  return __pyx_r;
12317 }
12318 
12319 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Nspectra, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi) {
12320  PyObject *__pyx_v_nn = NULL;
12321  PyObject *__pyx_v_NN = NULL;
12322  PyObject *__pyx_v_kk = NULL;
12323  PyObject *__pyx_v_NN1 = NULL;
12324  PyObject *__pyx_r = NULL;
12325  __Pyx_RefNannyDeclarations
12326  PyObject *__pyx_t_1 = NULL;
12327  PyObject *__pyx_t_2 = NULL;
12328  PyObject *__pyx_t_3 = NULL;
12329  int __pyx_t_4;
12330  Py_ssize_t __pyx_t_5;
12331  PyObject *__pyx_t_6 = NULL;
12332  PyObject *__pyx_t_7 = NULL;
12333  int __pyx_t_8;
12334  PyObject *__pyx_t_9 = NULL;
12335  PyObject *__pyx_t_10 = NULL;
12336  PyObject *__pyx_t_11 = NULL;
12337  PyObject *(*__pyx_t_12)(PyObject *);
12338  PyObject *__pyx_t_13 = NULL;
12339  PyObject *__pyx_t_14 = NULL;
12340  PyObject *__pyx_t_15 = NULL;
12341  PyObject *__pyx_t_16 = NULL;
12342  PyObject *__pyx_t_17 = NULL;
12343  PyObject *__pyx_t_18 = NULL;
12344  PyObject *__pyx_t_19 = NULL;
12345  Py_ssize_t __pyx_t_20;
12346  PyObject *__pyx_t_21 = NULL;
12347  int __pyx_lineno = 0;
12348  const char *__pyx_filename = NULL;
12349  int __pyx_clineno = 0;
12350  __Pyx_RefNannySetupContext("__init__", 0);
12351 
12352  /* "WaveTools.pyx":532
12353  * ):
12354  * # Checking length of arrays / lists to be equal to NSpectra
12355  * try: # <<<<<<<<<<<<<<
12356  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12357  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12358  */
12359  {
12360  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
12361  __Pyx_XGOTREF(__pyx_t_1);
12362  __Pyx_XGOTREF(__pyx_t_2);
12363  __Pyx_XGOTREF(__pyx_t_3);
12364  /*try:*/ {
12365 
12366  /* "WaveTools.pyx":533
12367  * # Checking length of arrays / lists to be equal to NSpectra
12368  * try:
12369  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
12370  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12371  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12372  */
12373  __pyx_t_5 = PyObject_Length(__pyx_v_Tp); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12374  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12375  __Pyx_GOTREF(__pyx_t_6);
12376  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12377  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12378  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12379  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12380  if (!__pyx_t_8) {
12381  } else {
12382  __pyx_t_4 = __pyx_t_8;
12383  goto __pyx_L12_bool_binop_done;
12384  }
12385  __pyx_t_5 = PyObject_Length(__pyx_v_Hs); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12386  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12387  __Pyx_GOTREF(__pyx_t_7);
12388  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12389  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12390  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12391  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12392  if (!__pyx_t_8) {
12393  } else {
12394  __pyx_t_4 = __pyx_t_8;
12395  goto __pyx_L12_bool_binop_done;
12396  }
12397  __pyx_t_5 = PyObject_Length(__pyx_v_waveDir); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12398  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12399  __Pyx_GOTREF(__pyx_t_6);
12400  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12401  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12402  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12403  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12404  if (!__pyx_t_8) {
12405  } else {
12406  __pyx_t_4 = __pyx_t_8;
12407  goto __pyx_L12_bool_binop_done;
12408  }
12409 
12410  /* "WaveTools.pyx":534
12411  * try:
12412  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12413  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \ # <<<<<<<<<<<<<<
12414  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12415  *
12416  */
12417  __pyx_t_5 = PyObject_Length(__pyx_v_N); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12418  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12419  __Pyx_GOTREF(__pyx_t_7);
12420  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12421  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12422  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12423  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12424  if (!__pyx_t_8) {
12425  } else {
12426  __pyx_t_4 = __pyx_t_8;
12427  goto __pyx_L12_bool_binop_done;
12428  }
12429  __pyx_t_5 = PyObject_Length(__pyx_v_bandFactor); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12430  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12431  __Pyx_GOTREF(__pyx_t_6);
12432  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12433  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12434  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12435  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12436  if (!__pyx_t_8) {
12437  } else {
12438  __pyx_t_4 = __pyx_t_8;
12439  goto __pyx_L12_bool_binop_done;
12440  }
12441 
12442  /* "WaveTools.pyx":535
12443  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12444  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12445  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra): # <<<<<<<<<<<<<<
12446  *
12447  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12448  */
12449  __pyx_t_5 = PyObject_Length(__pyx_v_spectName); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12450  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12451  __Pyx_GOTREF(__pyx_t_7);
12452  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12453  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12454  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12455  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12456  if (!__pyx_t_8) {
12457  } else {
12458  __pyx_t_4 = __pyx_t_8;
12459  goto __pyx_L12_bool_binop_done;
12460  }
12461  __pyx_t_5 = PyObject_Length(__pyx_v_spectral_params); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12462  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12463  __Pyx_GOTREF(__pyx_t_6);
12464  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12465  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12466  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12467  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12468  if (!__pyx_t_8) {
12469  } else {
12470  __pyx_t_4 = __pyx_t_8;
12471  goto __pyx_L12_bool_binop_done;
12472  }
12473  __pyx_t_5 = PyObject_Length(__pyx_v_phi); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12474  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12475  __Pyx_GOTREF(__pyx_t_7);
12476  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12477  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12478  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12479  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12480  __pyx_t_4 = __pyx_t_8;
12481  __pyx_L12_bool_binop_done:;
12482 
12483  /* "WaveTools.pyx":533
12484  * # Checking length of arrays / lists to be equal to NSpectra
12485  * try:
12486  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
12487  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12488  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12489  */
12490  if (__pyx_t_4) {
12491 
12492  /* "WaveTools.pyx":537
12493  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12494  *
12495  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
12496  * sys.exit(1)
12497  *
12498  */
12499  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12500  __Pyx_GOTREF(__pyx_t_6);
12501  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12502  __Pyx_GOTREF(__pyx_t_7);
12503  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12504  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12505 
12506  /* "WaveTools.pyx":538
12507  *
12508  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12509  * sys.exit(1) # <<<<<<<<<<<<<<
12510  *
12511  * except:
12512  */
12513  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12514  __Pyx_GOTREF(__pyx_t_7);
12515  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12516  __Pyx_GOTREF(__pyx_t_6);
12517  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12518  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12519  __Pyx_GOTREF(__pyx_t_7);
12520  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12521  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12522 
12523  /* "WaveTools.pyx":533
12524  * # Checking length of arrays / lists to be equal to NSpectra
12525  * try:
12526  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
12527  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12528  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12529  */
12530  }
12531 
12532  /* "WaveTools.pyx":532
12533  * ):
12534  * # Checking length of arrays / lists to be equal to NSpectra
12535  * try: # <<<<<<<<<<<<<<
12536  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12537  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12538  */
12539  }
12540  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
12541  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
12542  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12543  goto __pyx_L10_try_end;
12544  __pyx_L3_error:;
12545  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12546  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
12547 
12548  /* "WaveTools.pyx":540
12549  * sys.exit(1)
12550  *
12551  * except: # <<<<<<<<<<<<<<
12552  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12553  * sys.exit(1)
12554  */
12555  /*except:*/ {
12556  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12557  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12558  __Pyx_GOTREF(__pyx_t_7);
12559  __Pyx_GOTREF(__pyx_t_6);
12560  __Pyx_GOTREF(__pyx_t_9);
12561 
12562  /* "WaveTools.pyx":541
12563  *
12564  * except:
12565  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
12566  * sys.exit(1)
12567  * # Initialize numpy arrays for complete reconstruction
12568  */
12569  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12570  __Pyx_GOTREF(__pyx_t_10);
12571  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12572  __Pyx_GOTREF(__pyx_t_11);
12573  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12574  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12575 
12576  /* "WaveTools.pyx":542
12577  * except:
12578  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12579  * sys.exit(1) # <<<<<<<<<<<<<<
12580  * # Initialize numpy arrays for complete reconstruction
12581  * self.Nall = 0
12582  */
12583  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12584  __Pyx_GOTREF(__pyx_t_11);
12585  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12586  __Pyx_GOTREF(__pyx_t_10);
12587  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12588  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12589  __Pyx_GOTREF(__pyx_t_11);
12590  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12591  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12592  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12593  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12594  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12595  goto __pyx_L4_exception_handled;
12596  }
12597  __pyx_L5_except_error:;
12598 
12599  /* "WaveTools.pyx":532
12600  * ):
12601  * # Checking length of arrays / lists to be equal to NSpectra
12602  * try: # <<<<<<<<<<<<<<
12603  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12604  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12605  */
12606  __Pyx_XGIVEREF(__pyx_t_1);
12607  __Pyx_XGIVEREF(__pyx_t_2);
12608  __Pyx_XGIVEREF(__pyx_t_3);
12609  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
12610  goto __pyx_L1_error;
12611  __pyx_L4_exception_handled:;
12612  __Pyx_XGIVEREF(__pyx_t_1);
12613  __Pyx_XGIVEREF(__pyx_t_2);
12614  __Pyx_XGIVEREF(__pyx_t_3);
12615  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
12616  __pyx_L10_try_end:;
12617  }
12618 
12619  /* "WaveTools.pyx":544
12620  * sys.exit(1)
12621  * # Initialize numpy arrays for complete reconstruction
12622  * self.Nall = 0 # <<<<<<<<<<<<<<
12623  * for nn in N:
12624  * self.Nall+=nn
12625  */
12626  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nall, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12627 
12628  /* "WaveTools.pyx":545
12629  * # Initialize numpy arrays for complete reconstruction
12630  * self.Nall = 0
12631  * for nn in N: # <<<<<<<<<<<<<<
12632  * self.Nall+=nn
12633  *
12634  */
12635  if (likely(PyList_CheckExact(__pyx_v_N)) || PyTuple_CheckExact(__pyx_v_N)) {
12636  __pyx_t_9 = __pyx_v_N; __Pyx_INCREF(__pyx_t_9); __pyx_t_5 = 0;
12637  __pyx_t_12 = NULL;
12638  } else {
12639  __pyx_t_5 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_N); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12640  __Pyx_GOTREF(__pyx_t_9);
12641  __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12642  }
12643  for (;;) {
12644  if (likely(!__pyx_t_12)) {
12645  if (likely(PyList_CheckExact(__pyx_t_9))) {
12646  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_9)) break;
12647  #if CYTHON_COMPILING_IN_CPYTHON
12648  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12649  #else
12650  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12651  __Pyx_GOTREF(__pyx_t_6);
12652  #endif
12653  } else {
12654  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
12655  #if CYTHON_COMPILING_IN_CPYTHON
12656  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12657  #else
12658  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12659  __Pyx_GOTREF(__pyx_t_6);
12660  #endif
12661  }
12662  } else {
12663  __pyx_t_6 = __pyx_t_12(__pyx_t_9);
12664  if (unlikely(!__pyx_t_6)) {
12665  PyObject* exc_type = PyErr_Occurred();
12666  if (exc_type) {
12667  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
12668  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12669  }
12670  break;
12671  }
12672  __Pyx_GOTREF(__pyx_t_6);
12673  }
12674  __Pyx_XDECREF_SET(__pyx_v_nn, __pyx_t_6);
12675  __pyx_t_6 = 0;
12676 
12677  /* "WaveTools.pyx":546
12678  * self.Nall = 0
12679  * for nn in N:
12680  * self.Nall+=nn # <<<<<<<<<<<<<<
12681  *
12682  *
12683  */
12684  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12685  __Pyx_GOTREF(__pyx_t_6);
12686  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_v_nn); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12687  __Pyx_GOTREF(__pyx_t_7);
12688  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12689  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nall, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12690  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12691 
12692  /* "WaveTools.pyx":545
12693  * # Initialize numpy arrays for complete reconstruction
12694  * self.Nall = 0
12695  * for nn in N: # <<<<<<<<<<<<<<
12696  * self.Nall+=nn
12697  *
12698  */
12699  }
12700  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12701 
12702  /* "WaveTools.pyx":549
12703  *
12704  *
12705  * self.omegaM = np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12706  * self.kiM = np.zeros(self.Nall,float)
12707  * self.aiM = np.zeros(self.Nall,float)
12708  */
12709  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12710  __Pyx_GOTREF(__pyx_t_7);
12711  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12712  __Pyx_GOTREF(__pyx_t_6);
12713  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12714  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12715  __Pyx_GOTREF(__pyx_t_7);
12716  __pyx_t_11 = NULL;
12717  __pyx_t_5 = 0;
12718  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
12719  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
12720  if (likely(__pyx_t_11)) {
12721  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
12722  __Pyx_INCREF(__pyx_t_11);
12723  __Pyx_INCREF(function);
12724  __Pyx_DECREF_SET(__pyx_t_6, function);
12725  __pyx_t_5 = 1;
12726  }
12727  }
12728  __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12729  __Pyx_GOTREF(__pyx_t_10);
12730  if (__pyx_t_11) {
12731  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
12732  }
12733  __Pyx_GIVEREF(__pyx_t_7);
12734  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_t_7);
12735  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12736  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12737  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12738  __pyx_t_7 = 0;
12739  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12740  __Pyx_GOTREF(__pyx_t_9);
12741  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12742  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12743  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omegaM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12744  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12745 
12746  /* "WaveTools.pyx":550
12747  *
12748  * self.omegaM = np.zeros(self.Nall,float)
12749  * self.kiM = np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12750  * self.aiM = np.zeros(self.Nall,float)
12751  * self.kDirM = np.zeros((self.Nall,3),float)
12752  */
12753  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12754  __Pyx_GOTREF(__pyx_t_6);
12755  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12756  __Pyx_GOTREF(__pyx_t_10);
12757  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12758  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12759  __Pyx_GOTREF(__pyx_t_6);
12760  __pyx_t_7 = NULL;
12761  __pyx_t_5 = 0;
12762  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
12763  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
12764  if (likely(__pyx_t_7)) {
12765  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
12766  __Pyx_INCREF(__pyx_t_7);
12767  __Pyx_INCREF(function);
12768  __Pyx_DECREF_SET(__pyx_t_10, function);
12769  __pyx_t_5 = 1;
12770  }
12771  }
12772  __pyx_t_11 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12773  __Pyx_GOTREF(__pyx_t_11);
12774  if (__pyx_t_7) {
12775  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __pyx_t_7 = NULL;
12776  }
12777  __Pyx_GIVEREF(__pyx_t_6);
12778  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_t_6);
12779  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12780  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12781  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12782  __pyx_t_6 = 0;
12783  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12784  __Pyx_GOTREF(__pyx_t_9);
12785  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12786  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12787  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kiM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12788  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12789 
12790  /* "WaveTools.pyx":551
12791  * self.omegaM = np.zeros(self.Nall,float)
12792  * self.kiM = np.zeros(self.Nall,float)
12793  * self.aiM = np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12794  * self.kDirM = np.zeros((self.Nall,3),float)
12795  * self.phiM= np.zeros(self.Nall,float)
12796  */
12797  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12798  __Pyx_GOTREF(__pyx_t_10);
12799  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12800  __Pyx_GOTREF(__pyx_t_11);
12801  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12802  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12803  __Pyx_GOTREF(__pyx_t_10);
12804  __pyx_t_6 = NULL;
12805  __pyx_t_5 = 0;
12806  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
12807  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
12808  if (likely(__pyx_t_6)) {
12809  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
12810  __Pyx_INCREF(__pyx_t_6);
12811  __Pyx_INCREF(function);
12812  __Pyx_DECREF_SET(__pyx_t_11, function);
12813  __pyx_t_5 = 1;
12814  }
12815  }
12816  __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12817  __Pyx_GOTREF(__pyx_t_7);
12818  if (__pyx_t_6) {
12819  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
12820  }
12821  __Pyx_GIVEREF(__pyx_t_10);
12822  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_10);
12823  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12824  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12825  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12826  __pyx_t_10 = 0;
12827  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12828  __Pyx_GOTREF(__pyx_t_9);
12829  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12830  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12831  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_aiM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12832  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12833 
12834  /* "WaveTools.pyx":552
12835  * self.kiM = np.zeros(self.Nall,float)
12836  * self.aiM = np.zeros(self.Nall,float)
12837  * self.kDirM = np.zeros((self.Nall,3),float) # <<<<<<<<<<<<<<
12838  * self.phiM= np.zeros(self.Nall,float)
12839  *
12840  */
12841  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12842  __Pyx_GOTREF(__pyx_t_11);
12843  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12844  __Pyx_GOTREF(__pyx_t_7);
12845  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12846  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12847  __Pyx_GOTREF(__pyx_t_11);
12848  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12849  __Pyx_GOTREF(__pyx_t_10);
12850  __Pyx_GIVEREF(__pyx_t_11);
12851  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
12852  __Pyx_INCREF(__pyx_int_3);
12853  __Pyx_GIVEREF(__pyx_int_3);
12854  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_3);
12855  __pyx_t_11 = 0;
12856  __pyx_t_11 = NULL;
12857  __pyx_t_5 = 0;
12858  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
12859  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
12860  if (likely(__pyx_t_11)) {
12861  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
12862  __Pyx_INCREF(__pyx_t_11);
12863  __Pyx_INCREF(function);
12864  __Pyx_DECREF_SET(__pyx_t_7, function);
12865  __pyx_t_5 = 1;
12866  }
12867  }
12868  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12869  __Pyx_GOTREF(__pyx_t_6);
12870  if (__pyx_t_11) {
12871  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11); __pyx_t_11 = NULL;
12872  }
12873  __Pyx_GIVEREF(__pyx_t_10);
12874  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_10);
12875  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12876  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12877  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12878  __pyx_t_10 = 0;
12879  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12880  __Pyx_GOTREF(__pyx_t_9);
12881  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12882  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12883  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDirM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12884  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12885 
12886  /* "WaveTools.pyx":553
12887  * self.aiM = np.zeros(self.Nall,float)
12888  * self.kDirM = np.zeros((self.Nall,3),float)
12889  * self.phiM= np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12890  *
12891  *
12892  */
12893  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12894  __Pyx_GOTREF(__pyx_t_7);
12895  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12896  __Pyx_GOTREF(__pyx_t_6);
12897  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12898  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12899  __Pyx_GOTREF(__pyx_t_7);
12900  __pyx_t_10 = NULL;
12901  __pyx_t_5 = 0;
12902  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
12903  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
12904  if (likely(__pyx_t_10)) {
12905  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
12906  __Pyx_INCREF(__pyx_t_10);
12907  __Pyx_INCREF(function);
12908  __Pyx_DECREF_SET(__pyx_t_6, function);
12909  __pyx_t_5 = 1;
12910  }
12911  }
12912  __pyx_t_11 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12913  __Pyx_GOTREF(__pyx_t_11);
12914  if (__pyx_t_10) {
12915  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
12916  }
12917  __Pyx_GIVEREF(__pyx_t_7);
12918  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_t_7);
12919  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12920  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12921  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12922  __pyx_t_7 = 0;
12923  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12924  __Pyx_GOTREF(__pyx_t_9);
12925  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12926  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12927  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12928  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12929 
12930  /* "WaveTools.pyx":556
12931  *
12932  *
12933  * NN = 0 # <<<<<<<<<<<<<<
12934  * for kk in range(Nspectra):
12935  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
12936  */
12937  __Pyx_INCREF(__pyx_int_0);
12938  __pyx_v_NN = __pyx_int_0;
12939 
12940  /* "WaveTools.pyx":557
12941  *
12942  * NN = 0
12943  * for kk in range(Nspectra): # <<<<<<<<<<<<<<
12944  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
12945  * NN1 = NN
12946  */
12947  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12948  __Pyx_GOTREF(__pyx_t_9);
12949  __Pyx_INCREF(__pyx_v_Nspectra);
12950  __Pyx_GIVEREF(__pyx_v_Nspectra);
12951  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_Nspectra);
12952  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12953  __Pyx_GOTREF(__pyx_t_6);
12954  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12955  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
12956  __pyx_t_9 = __pyx_t_6; __Pyx_INCREF(__pyx_t_9); __pyx_t_5 = 0;
12957  __pyx_t_12 = NULL;
12958  } else {
12959  __pyx_t_5 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12960  __Pyx_GOTREF(__pyx_t_9);
12961  __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12962  }
12963  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12964  for (;;) {
12965  if (likely(!__pyx_t_12)) {
12966  if (likely(PyList_CheckExact(__pyx_t_9))) {
12967  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_9)) break;
12968  #if CYTHON_COMPILING_IN_CPYTHON
12969  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12970  #else
12971  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12972  __Pyx_GOTREF(__pyx_t_6);
12973  #endif
12974  } else {
12975  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
12976  #if CYTHON_COMPILING_IN_CPYTHON
12977  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12978  #else
12979  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12980  __Pyx_GOTREF(__pyx_t_6);
12981  #endif
12982  }
12983  } else {
12984  __pyx_t_6 = __pyx_t_12(__pyx_t_9);
12985  if (unlikely(!__pyx_t_6)) {
12986  PyObject* exc_type = PyErr_Occurred();
12987  if (exc_type) {
12988  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
12989  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12990  }
12991  break;
12992  }
12993  __Pyx_GOTREF(__pyx_t_6);
12994  }
12995  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_6);
12996  __pyx_t_6 = 0;
12997 
12998  /* "WaveTools.pyx":558
12999  * NN = 0
13000  * for kk in range(Nspectra):
13001  * logEvent("WaveTools.py: Reading spectra No %s" %kk) # <<<<<<<<<<<<<<
13002  * NN1 = NN
13003  * NN +=N[kk]
13004  */
13005  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13006  __Pyx_GOTREF(__pyx_t_11);
13007  __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Reading_spectra_No, __pyx_v_kk); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13008  __Pyx_GOTREF(__pyx_t_7);
13009  __pyx_t_10 = NULL;
13010  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
13011  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
13012  if (likely(__pyx_t_10)) {
13013  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
13014  __Pyx_INCREF(__pyx_t_10);
13015  __Pyx_INCREF(function);
13016  __Pyx_DECREF_SET(__pyx_t_11, function);
13017  }
13018  }
13019  if (!__pyx_t_10) {
13020  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13021  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
13022  __Pyx_GOTREF(__pyx_t_6);
13023  } else {
13024  __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13025  __Pyx_GOTREF(__pyx_t_13);
13026  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_10); __pyx_t_10 = NULL;
13027  __Pyx_GIVEREF(__pyx_t_7);
13028  PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_7);
13029  __pyx_t_7 = 0;
13030  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13031  __Pyx_GOTREF(__pyx_t_6);
13032  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13033  }
13034  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13035  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13036 
13037  /* "WaveTools.pyx":559
13038  * for kk in range(Nspectra):
13039  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
13040  * NN1 = NN # <<<<<<<<<<<<<<
13041  * NN +=N[kk]
13042  * RandomWaves.__init__(self,
13043  */
13044  __Pyx_INCREF(__pyx_v_NN);
13045  __Pyx_XDECREF_SET(__pyx_v_NN1, __pyx_v_NN);
13046 
13047  /* "WaveTools.pyx":560
13048  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
13049  * NN1 = NN
13050  * NN +=N[kk] # <<<<<<<<<<<<<<
13051  * RandomWaves.__init__(self,
13052  * Tp[kk], # np array with
13053  */
13054  __pyx_t_6 = PyObject_GetItem(__pyx_v_N, __pyx_v_kk); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13055  __Pyx_GOTREF(__pyx_t_6);
13056  __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_NN, __pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13057  __Pyx_GOTREF(__pyx_t_11);
13058  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13059  __Pyx_DECREF_SET(__pyx_v_NN, __pyx_t_11);
13060  __pyx_t_11 = 0;
13061 
13062  /* "WaveTools.pyx":561
13063  * NN1 = NN
13064  * NN +=N[kk]
13065  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
13066  * Tp[kk], # np array with
13067  * Hs[kk],
13068  */
13069  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13070  __Pyx_GOTREF(__pyx_t_6);
13071  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_init); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13072  __Pyx_GOTREF(__pyx_t_13);
13073  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13074 
13075  /* "WaveTools.pyx":562
13076  * NN +=N[kk]
13077  * RandomWaves.__init__(self,
13078  * Tp[kk], # np array with # <<<<<<<<<<<<<<
13079  * Hs[kk],
13080  * mwl,#m significant wave height
13081  */
13082  __pyx_t_6 = PyObject_GetItem(__pyx_v_Tp, __pyx_v_kk); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13083  __Pyx_GOTREF(__pyx_t_6);
13084 
13085  /* "WaveTools.pyx":563
13086  * RandomWaves.__init__(self,
13087  * Tp[kk], # np array with
13088  * Hs[kk], # <<<<<<<<<<<<<<
13089  * mwl,#m significant wave height
13090  * depth, #m depth
13091  */
13092  __pyx_t_7 = PyObject_GetItem(__pyx_v_Hs, __pyx_v_kk); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13093  __Pyx_GOTREF(__pyx_t_7);
13094 
13095  /* "WaveTools.pyx":566
13096  * mwl,#m significant wave height
13097  * depth, #m depth
13098  * waveDir[kk], # <<<<<<<<<<<<<<
13099  * g, #peak frequency
13100  * N[kk],
13101  */
13102  __pyx_t_10 = PyObject_GetItem(__pyx_v_waveDir, __pyx_v_kk); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13103  __Pyx_GOTREF(__pyx_t_10);
13104 
13105  /* "WaveTools.pyx":568
13106  * waveDir[kk],
13107  * g, #peak frequency
13108  * N[kk], # <<<<<<<<<<<<<<
13109  * bandFactor[kk], #accelerationof gravity
13110  * spectName[kk],# random words will result in error and return the available spectra
13111  */
13112  __pyx_t_14 = PyObject_GetItem(__pyx_v_N, __pyx_v_kk); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13113  __Pyx_GOTREF(__pyx_t_14);
13114 
13115  /* "WaveTools.pyx":569
13116  * g, #peak frequency
13117  * N[kk],
13118  * bandFactor[kk], #accelerationof gravity # <<<<<<<<<<<<<<
13119  * spectName[kk],# random words will result in error and return the available spectra
13120  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
13121  */
13122  __pyx_t_15 = PyObject_GetItem(__pyx_v_bandFactor, __pyx_v_kk); if (unlikely(__pyx_t_15 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13123  __Pyx_GOTREF(__pyx_t_15);
13124 
13125  /* "WaveTools.pyx":570
13126  * N[kk],
13127  * bandFactor[kk], #accelerationof gravity
13128  * spectName[kk],# random words will result in error and return the available spectra # <<<<<<<<<<<<<<
13129  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
13130  * phi[kk]
13131  */
13132  __pyx_t_16 = PyObject_GetItem(__pyx_v_spectName, __pyx_v_kk); if (unlikely(__pyx_t_16 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13133  __Pyx_GOTREF(__pyx_t_16);
13134 
13135  /* "WaveTools.pyx":571
13136  * bandFactor[kk], #accelerationof gravity
13137  * spectName[kk],# random words will result in error and return the available spectra
13138  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
13139  * phi[kk]
13140  * )
13141  */
13142  __pyx_t_17 = PyObject_GetItem(__pyx_v_spectral_params, __pyx_v_kk); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13143  __Pyx_GOTREF(__pyx_t_17);
13144 
13145  /* "WaveTools.pyx":572
13146  * spectName[kk],# random words will result in error and return the available spectra
13147  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
13148  * phi[kk] # <<<<<<<<<<<<<<
13149  * )
13150  * self.omegaM[NN1:NN] = self.omega
13151  */
13152  __pyx_t_18 = PyObject_GetItem(__pyx_v_phi, __pyx_v_kk); if (unlikely(__pyx_t_18 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13153  __Pyx_GOTREF(__pyx_t_18);
13154  __pyx_t_19 = NULL;
13155  __pyx_t_20 = 0;
13156  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_13))) {
13157  __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_13);
13158  if (likely(__pyx_t_19)) {
13159  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
13160  __Pyx_INCREF(__pyx_t_19);
13161  __Pyx_INCREF(function);
13162  __Pyx_DECREF_SET(__pyx_t_13, function);
13163  __pyx_t_20 = 1;
13164  }
13165  }
13166  __pyx_t_21 = PyTuple_New(12+__pyx_t_20); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13167  __Pyx_GOTREF(__pyx_t_21);
13168  if (__pyx_t_19) {
13169  __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_19); __pyx_t_19 = NULL;
13170  }
13171  __Pyx_INCREF(__pyx_v_self);
13172  __Pyx_GIVEREF(__pyx_v_self);
13173  PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_20, __pyx_v_self);
13174  __Pyx_GIVEREF(__pyx_t_6);
13175  PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_20, __pyx_t_6);
13176  __Pyx_GIVEREF(__pyx_t_7);
13177  PyTuple_SET_ITEM(__pyx_t_21, 2+__pyx_t_20, __pyx_t_7);
13178  __Pyx_INCREF(__pyx_v_mwl);
13179  __Pyx_GIVEREF(__pyx_v_mwl);
13180  PyTuple_SET_ITEM(__pyx_t_21, 3+__pyx_t_20, __pyx_v_mwl);
13181  __Pyx_INCREF(__pyx_v_depth);
13182  __Pyx_GIVEREF(__pyx_v_depth);
13183  PyTuple_SET_ITEM(__pyx_t_21, 4+__pyx_t_20, __pyx_v_depth);
13184  __Pyx_GIVEREF(__pyx_t_10);
13185  PyTuple_SET_ITEM(__pyx_t_21, 5+__pyx_t_20, __pyx_t_10);
13186  __Pyx_INCREF(__pyx_v_g);
13187  __Pyx_GIVEREF(__pyx_v_g);
13188  PyTuple_SET_ITEM(__pyx_t_21, 6+__pyx_t_20, __pyx_v_g);
13189  __Pyx_GIVEREF(__pyx_t_14);
13190  PyTuple_SET_ITEM(__pyx_t_21, 7+__pyx_t_20, __pyx_t_14);
13191  __Pyx_GIVEREF(__pyx_t_15);
13192  PyTuple_SET_ITEM(__pyx_t_21, 8+__pyx_t_20, __pyx_t_15);
13193  __Pyx_GIVEREF(__pyx_t_16);
13194  PyTuple_SET_ITEM(__pyx_t_21, 9+__pyx_t_20, __pyx_t_16);
13195  __Pyx_GIVEREF(__pyx_t_17);
13196  PyTuple_SET_ITEM(__pyx_t_21, 10+__pyx_t_20, __pyx_t_17);
13197  __Pyx_GIVEREF(__pyx_t_18);
13198  PyTuple_SET_ITEM(__pyx_t_21, 11+__pyx_t_20, __pyx_t_18);
13199  __pyx_t_6 = 0;
13200  __pyx_t_7 = 0;
13201  __pyx_t_10 = 0;
13202  __pyx_t_14 = 0;
13203  __pyx_t_15 = 0;
13204  __pyx_t_16 = 0;
13205  __pyx_t_17 = 0;
13206  __pyx_t_18 = 0;
13207  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_21, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13208  __Pyx_GOTREF(__pyx_t_11);
13209  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
13210  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13211  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13212 
13213  /* "WaveTools.pyx":574
13214  * phi[kk]
13215  * )
13216  * self.omegaM[NN1:NN] = self.omega # <<<<<<<<<<<<<<
13217  * self.kiM[NN1:NN] = self.ki
13218  * self.aiM[NN1:NN] = self.ai
13219  */
13220  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13221  __Pyx_GOTREF(__pyx_t_11);
13222  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omegaM); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13223  __Pyx_GOTREF(__pyx_t_13);
13224  if (__Pyx_PyObject_SetSlice(__pyx_t_13, __pyx_t_11, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13225  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13226  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13227 
13228  /* "WaveTools.pyx":575
13229  * )
13230  * self.omegaM[NN1:NN] = self.omega
13231  * self.kiM[NN1:NN] = self.ki # <<<<<<<<<<<<<<
13232  * self.aiM[NN1:NN] = self.ai
13233  * self.kDirM[NN1:NN,:] =self.kDir[:,:]
13234  */
13235  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13236  __Pyx_GOTREF(__pyx_t_11);
13237  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kiM); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13238  __Pyx_GOTREF(__pyx_t_13);
13239  if (__Pyx_PyObject_SetSlice(__pyx_t_13, __pyx_t_11, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13240  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13241  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13242 
13243  /* "WaveTools.pyx":576
13244  * self.omegaM[NN1:NN] = self.omega
13245  * self.kiM[NN1:NN] = self.ki
13246  * self.aiM[NN1:NN] = self.ai # <<<<<<<<<<<<<<
13247  * self.kDirM[NN1:NN,:] =self.kDir[:,:]
13248  * self.phiM[NN1:NN] = self.phi
13249  */
13250  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13251  __Pyx_GOTREF(__pyx_t_11);
13252  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiM); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13253  __Pyx_GOTREF(__pyx_t_13);
13254  if (__Pyx_PyObject_SetSlice(__pyx_t_13, __pyx_t_11, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13255  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13256  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13257 
13258  /* "WaveTools.pyx":577
13259  * self.kiM[NN1:NN] = self.ki
13260  * self.aiM[NN1:NN] = self.ai
13261  * self.kDirM[NN1:NN,:] =self.kDir[:,:] # <<<<<<<<<<<<<<
13262  * self.phiM[NN1:NN] = self.phi
13263  *
13264  */
13265  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13266  __Pyx_GOTREF(__pyx_t_11);
13267  __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__58); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13268  __Pyx_GOTREF(__pyx_t_13);
13269  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13270  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDirM); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13271  __Pyx_GOTREF(__pyx_t_11);
13272  __pyx_t_21 = PySlice_New(__pyx_v_NN1, __pyx_v_NN, Py_None); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13273  __Pyx_GOTREF(__pyx_t_21);
13274  __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13275  __Pyx_GOTREF(__pyx_t_18);
13276  __Pyx_GIVEREF(__pyx_t_21);
13277  PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_21);
13278  __Pyx_INCREF(__pyx_slice__59);
13279  __Pyx_GIVEREF(__pyx_slice__59);
13280  PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_slice__59);
13281  __pyx_t_21 = 0;
13282  if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_t_18, __pyx_t_13) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13283  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13284  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
13285  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13286 
13287  /* "WaveTools.pyx":578
13288  * self.aiM[NN1:NN] = self.ai
13289  * self.kDirM[NN1:NN,:] =self.kDir[:,:]
13290  * self.phiM[NN1:NN] = self.phi # <<<<<<<<<<<<<<
13291  *
13292  *
13293  */
13294  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13295  __Pyx_GOTREF(__pyx_t_13);
13296  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiM); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13297  __Pyx_GOTREF(__pyx_t_18);
13298  if (__Pyx_PyObject_SetSlice(__pyx_t_18, __pyx_t_13, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13299  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
13300  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13301 
13302  /* "WaveTools.pyx":557
13303  *
13304  * NN = 0
13305  * for kk in range(Nspectra): # <<<<<<<<<<<<<<
13306  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
13307  * NN1 = NN
13308  */
13309  }
13310  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13311 
13312  /* "WaveTools.pyx":517
13313  * :param Nspectra, number of spectra
13314  * """
13315  * def __init__(self, # <<<<<<<<<<<<<<
13316  * Nspectra,
13317  * Tp, # np array with
13318  */
13319 
13320  /* function exit code */
13321  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13322  goto __pyx_L0;
13323  __pyx_L1_error:;
13324  __Pyx_XDECREF(__pyx_t_6);
13325  __Pyx_XDECREF(__pyx_t_7);
13326  __Pyx_XDECREF(__pyx_t_9);
13327  __Pyx_XDECREF(__pyx_t_10);
13328  __Pyx_XDECREF(__pyx_t_11);
13329  __Pyx_XDECREF(__pyx_t_13);
13330  __Pyx_XDECREF(__pyx_t_14);
13331  __Pyx_XDECREF(__pyx_t_15);
13332  __Pyx_XDECREF(__pyx_t_16);
13333  __Pyx_XDECREF(__pyx_t_17);
13334  __Pyx_XDECREF(__pyx_t_18);
13335  __Pyx_XDECREF(__pyx_t_19);
13336  __Pyx_XDECREF(__pyx_t_21);
13337  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13338  __pyx_r = NULL;
13339  __pyx_L0:;
13340  __Pyx_XDECREF(__pyx_v_nn);
13341  __Pyx_XDECREF(__pyx_v_NN);
13342  __Pyx_XDECREF(__pyx_v_kk);
13343  __Pyx_XDECREF(__pyx_v_NN1);
13344  __Pyx_XGIVEREF(__pyx_r);
13345  __Pyx_RefNannyFinishContext();
13346  return __pyx_r;
13347 }
13348 
13349 /* "WaveTools.pyx":581
13350  *
13351  *
13352  * def eta(self, x, t): # <<<<<<<<<<<<<<
13353  * """Free surface displacement
13354  *
13355  */
13356 
13357 /* Python wrapper */
13358 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13359 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_2eta[] = "MultiSpectraRandomWaves.eta(self, x, t)\nFree surface displacement\n\n :param x: floating point x coordinate\n :param t: time";
13360 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_2eta};
13361 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13362  PyObject *__pyx_v_self = 0;
13363  PyObject *__pyx_v_x = 0;
13364  PyObject *__pyx_v_t = 0;
13365  int __pyx_lineno = 0;
13366  const char *__pyx_filename = NULL;
13367  int __pyx_clineno = 0;
13368  PyObject *__pyx_r = 0;
13369  __Pyx_RefNannyDeclarations
13370  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
13371  {
13372  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
13373  PyObject* values[3] = {0,0,0};
13374  if (unlikely(__pyx_kwds)) {
13375  Py_ssize_t kw_args;
13376  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13377  switch (pos_args) {
13378  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13379  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13380  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13381  case 0: break;
13382  default: goto __pyx_L5_argtuple_error;
13383  }
13384  kw_args = PyDict_Size(__pyx_kwds);
13385  switch (pos_args) {
13386  case 0:
13387  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
13388  else goto __pyx_L5_argtuple_error;
13389  case 1:
13390  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
13391  else {
13392  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13393  }
13394  case 2:
13395  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
13396  else {
13397  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13398  }
13399  }
13400  if (unlikely(kw_args > 0)) {
13401  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13402  }
13403  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
13404  goto __pyx_L5_argtuple_error;
13405  } else {
13406  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13407  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13408  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13409  }
13410  __pyx_v_self = values[0];
13411  __pyx_v_x = values[1];
13412  __pyx_v_t = values[2];
13413  }
13414  goto __pyx_L4_argument_unpacking_done;
13415  __pyx_L5_argtuple_error:;
13416  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13417  __pyx_L3_error:;
13418  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
13419  __Pyx_RefNannyFinishContext();
13420  return NULL;
13421  __pyx_L4_argument_unpacking_done:;
13422  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
13423 
13424  /* function exit code */
13425  __Pyx_RefNannyFinishContext();
13426  return __pyx_r;
13427 }
13428 
13429 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
13430  PyObject *__pyx_v_Eta = NULL;
13431  PyObject *__pyx_v_ii = NULL;
13432  PyObject *__pyx_r = NULL;
13433  __Pyx_RefNannyDeclarations
13434  PyObject *__pyx_t_1 = NULL;
13435  PyObject *__pyx_t_2 = NULL;
13436  Py_ssize_t __pyx_t_3;
13437  PyObject *(*__pyx_t_4)(PyObject *);
13438  PyObject *__pyx_t_5 = NULL;
13439  PyObject *__pyx_t_6 = NULL;
13440  PyObject *__pyx_t_7 = NULL;
13441  PyObject *__pyx_t_8 = NULL;
13442  PyObject *__pyx_t_9 = NULL;
13443  PyObject *__pyx_t_10 = NULL;
13444  Py_ssize_t __pyx_t_11;
13445  PyObject *__pyx_t_12 = NULL;
13446  int __pyx_lineno = 0;
13447  const char *__pyx_filename = NULL;
13448  int __pyx_clineno = 0;
13449  __Pyx_RefNannySetupContext("eta", 0);
13450 
13451  /* "WaveTools.pyx":586
13452  * :param x: floating point x coordinate
13453  * :param t: time"""
13454  * Eta=0. # <<<<<<<<<<<<<<
13455  * for ii in range(self.Nall):
13456  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13457  */
13458  __Pyx_INCREF(__pyx_float_0_);
13459  __pyx_v_Eta = __pyx_float_0_;
13460 
13461  /* "WaveTools.pyx":587
13462  * :param t: time"""
13463  * Eta=0.
13464  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13465  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13466  * return Eta
13467  */
13468  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13469  __Pyx_GOTREF(__pyx_t_1);
13470  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13471  __Pyx_GOTREF(__pyx_t_2);
13472  __Pyx_GIVEREF(__pyx_t_1);
13473  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
13474  __pyx_t_1 = 0;
13475  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13476  __Pyx_GOTREF(__pyx_t_1);
13477  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13478  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
13479  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
13480  __pyx_t_4 = NULL;
13481  } else {
13482  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13483  __Pyx_GOTREF(__pyx_t_2);
13484  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13485  }
13486  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13487  for (;;) {
13488  if (likely(!__pyx_t_4)) {
13489  if (likely(PyList_CheckExact(__pyx_t_2))) {
13490  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
13491  #if CYTHON_COMPILING_IN_CPYTHON
13492  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13493  #else
13494  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13495  __Pyx_GOTREF(__pyx_t_1);
13496  #endif
13497  } else {
13498  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
13499  #if CYTHON_COMPILING_IN_CPYTHON
13500  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13501  #else
13502  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13503  __Pyx_GOTREF(__pyx_t_1);
13504  #endif
13505  }
13506  } else {
13507  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
13508  if (unlikely(!__pyx_t_1)) {
13509  PyObject* exc_type = PyErr_Occurred();
13510  if (exc_type) {
13511  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
13512  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13513  }
13514  break;
13515  }
13516  __Pyx_GOTREF(__pyx_t_1);
13517  }
13518  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
13519  __pyx_t_1 = 0;
13520 
13521  /* "WaveTools.pyx":588
13522  * Eta=0.
13523  * for ii in range(self.Nall):
13524  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii]) # <<<<<<<<<<<<<<
13525  * return Eta
13526  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13527  */
13528  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13529  __Pyx_GOTREF(__pyx_t_5);
13530  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDirM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13531  __Pyx_GOTREF(__pyx_t_6);
13532  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13533  __Pyx_GOTREF(__pyx_t_7);
13534  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13535  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omegaM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13536  __Pyx_GOTREF(__pyx_t_6);
13537  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13538  __Pyx_GOTREF(__pyx_t_8);
13539  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13540  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13541  __Pyx_GOTREF(__pyx_t_6);
13542  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13543  __Pyx_GOTREF(__pyx_t_9);
13544  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13545  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13546  __Pyx_GOTREF(__pyx_t_6);
13547  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13548  __Pyx_GOTREF(__pyx_t_10);
13549  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13550  __pyx_t_6 = NULL;
13551  __pyx_t_11 = 0;
13552  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
13553  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
13554  if (likely(__pyx_t_6)) {
13555  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
13556  __Pyx_INCREF(__pyx_t_6);
13557  __Pyx_INCREF(function);
13558  __Pyx_DECREF_SET(__pyx_t_5, function);
13559  __pyx_t_11 = 1;
13560  }
13561  }
13562  __pyx_t_12 = PyTuple_New(6+__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13563  __Pyx_GOTREF(__pyx_t_12);
13564  if (__pyx_t_6) {
13565  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
13566  }
13567  __Pyx_INCREF(__pyx_v_x);
13568  __Pyx_GIVEREF(__pyx_v_x);
13569  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_v_x);
13570  __Pyx_INCREF(__pyx_v_t);
13571  __Pyx_GIVEREF(__pyx_v_t);
13572  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_v_t);
13573  __Pyx_GIVEREF(__pyx_t_7);
13574  PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_11, __pyx_t_7);
13575  __Pyx_GIVEREF(__pyx_t_8);
13576  PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_11, __pyx_t_8);
13577  __Pyx_GIVEREF(__pyx_t_9);
13578  PyTuple_SET_ITEM(__pyx_t_12, 4+__pyx_t_11, __pyx_t_9);
13579  __Pyx_GIVEREF(__pyx_t_10);
13580  PyTuple_SET_ITEM(__pyx_t_12, 5+__pyx_t_11, __pyx_t_10);
13581  __pyx_t_7 = 0;
13582  __pyx_t_8 = 0;
13583  __pyx_t_9 = 0;
13584  __pyx_t_10 = 0;
13585  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13586  __Pyx_GOTREF(__pyx_t_1);
13587  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
13588  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13589  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13590  __Pyx_GOTREF(__pyx_t_5);
13591  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13592  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_5);
13593  __pyx_t_5 = 0;
13594 
13595  /* "WaveTools.pyx":587
13596  * :param t: time"""
13597  * Eta=0.
13598  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13599  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13600  * return Eta
13601  */
13602  }
13603  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13604 
13605  /* "WaveTools.pyx":589
13606  * for ii in range(self.Nall):
13607  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13608  * return Eta # <<<<<<<<<<<<<<
13609  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13610  *
13611  */
13612  __Pyx_XDECREF(__pyx_r);
13613  __Pyx_INCREF(__pyx_v_Eta);
13614  __pyx_r = __pyx_v_Eta;
13615  goto __pyx_L0;
13616 
13617  /* "WaveTools.pyx":581
13618  *
13619  *
13620  * def eta(self, x, t): # <<<<<<<<<<<<<<
13621  * """Free surface displacement
13622  *
13623  */
13624 
13625  /* function exit code */
13626  __pyx_L1_error:;
13627  __Pyx_XDECREF(__pyx_t_1);
13628  __Pyx_XDECREF(__pyx_t_2);
13629  __Pyx_XDECREF(__pyx_t_5);
13630  __Pyx_XDECREF(__pyx_t_6);
13631  __Pyx_XDECREF(__pyx_t_7);
13632  __Pyx_XDECREF(__pyx_t_8);
13633  __Pyx_XDECREF(__pyx_t_9);
13634  __Pyx_XDECREF(__pyx_t_10);
13635  __Pyx_XDECREF(__pyx_t_12);
13636  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
13637  __pyx_r = NULL;
13638  __pyx_L0:;
13639  __Pyx_XDECREF(__pyx_v_Eta);
13640  __Pyx_XDECREF(__pyx_v_ii);
13641  __Pyx_XGIVEREF(__pyx_r);
13642  __Pyx_RefNannyFinishContext();
13643  return __pyx_r;
13644 }
13645 
13646 /* "WaveTools.pyx":592
13647  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13648  *
13649  * def u(self, x, t): # <<<<<<<<<<<<<<
13650  * """x-component of velocity
13651  *
13652  */
13653 
13654 /* Python wrapper */
13655 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13656 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_4u[] = "MultiSpectraRandomWaves.u(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
13657 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_4u};
13658 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13659  PyObject *__pyx_v_self = 0;
13660  PyObject *__pyx_v_x = 0;
13661  PyObject *__pyx_v_t = 0;
13662  int __pyx_lineno = 0;
13663  const char *__pyx_filename = NULL;
13664  int __pyx_clineno = 0;
13665  PyObject *__pyx_r = 0;
13666  __Pyx_RefNannyDeclarations
13667  __Pyx_RefNannySetupContext("u (wrapper)", 0);
13668  {
13669  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
13670  PyObject* values[3] = {0,0,0};
13671  if (unlikely(__pyx_kwds)) {
13672  Py_ssize_t kw_args;
13673  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13674  switch (pos_args) {
13675  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13676  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13677  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13678  case 0: break;
13679  default: goto __pyx_L5_argtuple_error;
13680  }
13681  kw_args = PyDict_Size(__pyx_kwds);
13682  switch (pos_args) {
13683  case 0:
13684  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
13685  else goto __pyx_L5_argtuple_error;
13686  case 1:
13687  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
13688  else {
13689  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13690  }
13691  case 2:
13692  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
13693  else {
13694  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13695  }
13696  }
13697  if (unlikely(kw_args > 0)) {
13698  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13699  }
13700  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
13701  goto __pyx_L5_argtuple_error;
13702  } else {
13703  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13704  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13705  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13706  }
13707  __pyx_v_self = values[0];
13708  __pyx_v_x = values[1];
13709  __pyx_v_t = values[2];
13710  }
13711  goto __pyx_L4_argument_unpacking_done;
13712  __pyx_L5_argtuple_error:;
13713  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13714  __pyx_L3_error:;
13715  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
13716  __Pyx_RefNannyFinishContext();
13717  return NULL;
13718  __pyx_L4_argument_unpacking_done:;
13719  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
13720 
13721  /* function exit code */
13722  __Pyx_RefNannyFinishContext();
13723  return __pyx_r;
13724 }
13725 
13726 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
13727  PyObject *__pyx_v_U = NULL;
13728  PyObject *__pyx_v_ii = NULL;
13729  PyObject *__pyx_r = NULL;
13730  __Pyx_RefNannyDeclarations
13731  PyObject *__pyx_t_1 = NULL;
13732  PyObject *__pyx_t_2 = NULL;
13733  Py_ssize_t __pyx_t_3;
13734  PyObject *(*__pyx_t_4)(PyObject *);
13735  PyObject *__pyx_t_5 = NULL;
13736  PyObject *__pyx_t_6 = NULL;
13737  PyObject *__pyx_t_7 = NULL;
13738  PyObject *__pyx_t_8 = NULL;
13739  PyObject *__pyx_t_9 = NULL;
13740  PyObject *__pyx_t_10 = NULL;
13741  PyObject *__pyx_t_11 = NULL;
13742  PyObject *__pyx_t_12 = NULL;
13743  PyObject *__pyx_t_13 = NULL;
13744  PyObject *__pyx_t_14 = NULL;
13745  PyObject *__pyx_t_15 = NULL;
13746  Py_ssize_t __pyx_t_16;
13747  PyObject *__pyx_t_17 = NULL;
13748  int __pyx_lineno = 0;
13749  const char *__pyx_filename = NULL;
13750  int __pyx_clineno = 0;
13751  __Pyx_RefNannySetupContext("u", 0);
13752 
13753  /* "WaveTools.pyx":599
13754  * :param t: time
13755  * """
13756  * U=0. # <<<<<<<<<<<<<<
13757  * for ii in range(self.Nall):
13758  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13759  */
13760  __Pyx_INCREF(__pyx_float_0_);
13761  __pyx_v_U = __pyx_float_0_;
13762 
13763  /* "WaveTools.pyx":600
13764  * """
13765  * U=0.
13766  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13767  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13768  * return U
13769  */
13770  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13771  __Pyx_GOTREF(__pyx_t_1);
13772  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13773  __Pyx_GOTREF(__pyx_t_2);
13774  __Pyx_GIVEREF(__pyx_t_1);
13775  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
13776  __pyx_t_1 = 0;
13777  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13778  __Pyx_GOTREF(__pyx_t_1);
13779  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13780  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
13781  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
13782  __pyx_t_4 = NULL;
13783  } else {
13784  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13785  __Pyx_GOTREF(__pyx_t_2);
13786  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13787  }
13788  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13789  for (;;) {
13790  if (likely(!__pyx_t_4)) {
13791  if (likely(PyList_CheckExact(__pyx_t_2))) {
13792  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
13793  #if CYTHON_COMPILING_IN_CPYTHON
13794  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13795  #else
13796  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13797  __Pyx_GOTREF(__pyx_t_1);
13798  #endif
13799  } else {
13800  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
13801  #if CYTHON_COMPILING_IN_CPYTHON
13802  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13803  #else
13804  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13805  __Pyx_GOTREF(__pyx_t_1);
13806  #endif
13807  }
13808  } else {
13809  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
13810  if (unlikely(!__pyx_t_1)) {
13811  PyObject* exc_type = PyErr_Occurred();
13812  if (exc_type) {
13813  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
13814  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13815  }
13816  break;
13817  }
13818  __Pyx_GOTREF(__pyx_t_1);
13819  }
13820  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
13821  __pyx_t_1 = 0;
13822 
13823  /* "WaveTools.pyx":601
13824  * U=0.
13825  * for ii in range(self.Nall):
13826  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
13827  * return U
13828  *
13829  */
13830  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13831  __Pyx_GOTREF(__pyx_t_5);
13832  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDirM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13833  __Pyx_GOTREF(__pyx_t_6);
13834  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13835  __Pyx_GOTREF(__pyx_t_7);
13836  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13837  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13838  __Pyx_GOTREF(__pyx_t_6);
13839  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13840  __Pyx_GOTREF(__pyx_t_8);
13841  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13842  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omegaM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13843  __Pyx_GOTREF(__pyx_t_6);
13844  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13845  __Pyx_GOTREF(__pyx_t_9);
13846  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13847  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13848  __Pyx_GOTREF(__pyx_t_6);
13849  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13850  __Pyx_GOTREF(__pyx_t_10);
13851  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13852  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13853  __Pyx_GOTREF(__pyx_t_6);
13854  __pyx_t_11 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13855  __Pyx_GOTREF(__pyx_t_11);
13856  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13857  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13858  __Pyx_GOTREF(__pyx_t_6);
13859  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13860  __Pyx_GOTREF(__pyx_t_12);
13861  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13862  __Pyx_GOTREF(__pyx_t_13);
13863  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13864  __Pyx_GOTREF(__pyx_t_14);
13865  __pyx_t_15 = NULL;
13866  __pyx_t_16 = 0;
13867  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
13868  __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
13869  if (likely(__pyx_t_15)) {
13870  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
13871  __Pyx_INCREF(__pyx_t_15);
13872  __Pyx_INCREF(function);
13873  __Pyx_DECREF_SET(__pyx_t_5, function);
13874  __pyx_t_16 = 1;
13875  }
13876  }
13877  __pyx_t_17 = PyTuple_New(11+__pyx_t_16); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13878  __Pyx_GOTREF(__pyx_t_17);
13879  if (__pyx_t_15) {
13880  __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __pyx_t_15 = NULL;
13881  }
13882  __Pyx_INCREF(__pyx_v_x);
13883  __Pyx_GIVEREF(__pyx_v_x);
13884  PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_v_x);
13885  __Pyx_INCREF(__pyx_v_t);
13886  __Pyx_GIVEREF(__pyx_v_t);
13887  PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_v_t);
13888  __Pyx_GIVEREF(__pyx_t_7);
13889  PyTuple_SET_ITEM(__pyx_t_17, 2+__pyx_t_16, __pyx_t_7);
13890  __Pyx_GIVEREF(__pyx_t_8);
13891  PyTuple_SET_ITEM(__pyx_t_17, 3+__pyx_t_16, __pyx_t_8);
13892  __Pyx_GIVEREF(__pyx_t_9);
13893  PyTuple_SET_ITEM(__pyx_t_17, 4+__pyx_t_16, __pyx_t_9);
13894  __Pyx_GIVEREF(__pyx_t_10);
13895  PyTuple_SET_ITEM(__pyx_t_17, 5+__pyx_t_16, __pyx_t_10);
13896  __Pyx_GIVEREF(__pyx_t_11);
13897  PyTuple_SET_ITEM(__pyx_t_17, 6+__pyx_t_16, __pyx_t_11);
13898  __Pyx_GIVEREF(__pyx_t_6);
13899  PyTuple_SET_ITEM(__pyx_t_17, 7+__pyx_t_16, __pyx_t_6);
13900  __Pyx_GIVEREF(__pyx_t_12);
13901  PyTuple_SET_ITEM(__pyx_t_17, 8+__pyx_t_16, __pyx_t_12);
13902  __Pyx_GIVEREF(__pyx_t_13);
13903  PyTuple_SET_ITEM(__pyx_t_17, 9+__pyx_t_16, __pyx_t_13);
13904  __Pyx_GIVEREF(__pyx_t_14);
13905  PyTuple_SET_ITEM(__pyx_t_17, 10+__pyx_t_16, __pyx_t_14);
13906  __pyx_t_7 = 0;
13907  __pyx_t_8 = 0;
13908  __pyx_t_9 = 0;
13909  __pyx_t_10 = 0;
13910  __pyx_t_11 = 0;
13911  __pyx_t_6 = 0;
13912  __pyx_t_12 = 0;
13913  __pyx_t_13 = 0;
13914  __pyx_t_14 = 0;
13915  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13916  __Pyx_GOTREF(__pyx_t_1);
13917  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
13918  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13919  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13920  __Pyx_GOTREF(__pyx_t_5);
13921  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13922  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_5);
13923  __pyx_t_5 = 0;
13924 
13925  /* "WaveTools.pyx":600
13926  * """
13927  * U=0.
13928  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13929  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13930  * return U
13931  */
13932  }
13933  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13934 
13935  /* "WaveTools.pyx":602
13936  * for ii in range(self.Nall):
13937  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13938  * return U # <<<<<<<<<<<<<<
13939  *
13940  *
13941  */
13942  __Pyx_XDECREF(__pyx_r);
13943  __Pyx_INCREF(__pyx_v_U);
13944  __pyx_r = __pyx_v_U;
13945  goto __pyx_L0;
13946 
13947  /* "WaveTools.pyx":592
13948  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13949  *
13950  * def u(self, x, t): # <<<<<<<<<<<<<<
13951  * """x-component of velocity
13952  *
13953  */
13954 
13955  /* function exit code */
13956  __pyx_L1_error:;
13957  __Pyx_XDECREF(__pyx_t_1);
13958  __Pyx_XDECREF(__pyx_t_2);
13959  __Pyx_XDECREF(__pyx_t_5);
13960  __Pyx_XDECREF(__pyx_t_6);
13961  __Pyx_XDECREF(__pyx_t_7);
13962  __Pyx_XDECREF(__pyx_t_8);
13963  __Pyx_XDECREF(__pyx_t_9);
13964  __Pyx_XDECREF(__pyx_t_10);
13965  __Pyx_XDECREF(__pyx_t_11);
13966  __Pyx_XDECREF(__pyx_t_12);
13967  __Pyx_XDECREF(__pyx_t_13);
13968  __Pyx_XDECREF(__pyx_t_14);
13969  __Pyx_XDECREF(__pyx_t_15);
13970  __Pyx_XDECREF(__pyx_t_17);
13971  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
13972  __pyx_r = NULL;
13973  __pyx_L0:;
13974  __Pyx_XDECREF(__pyx_v_U);
13975  __Pyx_XDECREF(__pyx_v_ii);
13976  __Pyx_XGIVEREF(__pyx_r);
13977  __Pyx_RefNannyFinishContext();
13978  return __pyx_r;
13979 }
13980 
13981 /* "WaveTools.pyx":616
13982  *
13983  * """
13984  * def __init__(self, # <<<<<<<<<<<<<<
13985  * M, #half bin of frequencies
13986  * Tp, # np array with
13987  */
13988 
13989 /* Python wrapper */
13990 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13991 static char __pyx_doc_9WaveTools_16DirectionalWaves___init__[] = "DirectionalWaves.__init__(self, M, Tp, Hs, mwl, depth, waveDir0, g, N, bandFactor, spectName, spreadName, spectral_params=None, spread_params=None, phi=None, phiSymm=False)";
13992 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves___init__};
13993 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13994  PyObject *__pyx_v_self = 0;
13995  PyObject *__pyx_v_M = 0;
13996  PyObject *__pyx_v_Tp = 0;
13997  PyObject *__pyx_v_Hs = 0;
13998  PyObject *__pyx_v_mwl = 0;
13999  PyObject *__pyx_v_depth = 0;
14000  PyObject *__pyx_v_waveDir0 = 0;
14001  PyObject *__pyx_v_g = 0;
14002  PyObject *__pyx_v_N = 0;
14003  PyObject *__pyx_v_bandFactor = 0;
14004  PyObject *__pyx_v_spectName = 0;
14005  PyObject *__pyx_v_spreadName = 0;
14006  PyObject *__pyx_v_spectral_params = 0;
14007  PyObject *__pyx_v_spread_params = 0;
14008  PyObject *__pyx_v_phi = 0;
14009  PyObject *__pyx_v_phiSymm = 0;
14010  int __pyx_lineno = 0;
14011  const char *__pyx_filename = NULL;
14012  int __pyx_clineno = 0;
14013  PyObject *__pyx_r = 0;
14014  __Pyx_RefNannyDeclarations
14015  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
14016  {
14017  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_M,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir0,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spreadName,&__pyx_n_s_spectral_params,&__pyx_n_s_spread_params,&__pyx_n_s_phi,&__pyx_n_s_phiSymm,0};
14018  PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
14019 
14020  /* "WaveTools.pyx":628
14021  * spectName ,# random words will result in error and return the available spectra
14022  * spreadName ,# random words will result in error and return the available spectra
14023  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
14024  * spread_params = None,
14025  * phi=None, # phi must be an (2*M+1)*N numpy array
14026  */
14027  values[12] = ((PyObject *)((PyObject *)Py_None));
14028 
14029  /* "WaveTools.pyx":629
14030  * spreadName ,# random words will result in error and return the available spectra
14031  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
14032  * spread_params = None, # <<<<<<<<<<<<<<
14033  * phi=None, # phi must be an (2*M+1)*N numpy array
14034  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
14035  */
14036  values[13] = ((PyObject *)((PyObject *)Py_None));
14037 
14038  /* "WaveTools.pyx":630
14039  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
14040  * spread_params = None,
14041  * phi=None, # phi must be an (2*M+1)*N numpy array # <<<<<<<<<<<<<<
14042  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
14043  * ):
14044  */
14045  values[14] = ((PyObject *)((PyObject *)Py_None));
14046 
14047  /* "WaveTools.pyx":631
14048  * spread_params = None,
14049  * phi=None, # phi must be an (2*M+1)*N numpy array
14050  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2] # <<<<<<<<<<<<<<
14051  * ):
14052  * validSpread = [cos2s,mitsuyasu]
14053  */
14054  values[15] = ((PyObject *)((PyObject *)Py_False));
14055  if (unlikely(__pyx_kwds)) {
14056  Py_ssize_t kw_args;
14057  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14058  switch (pos_args) {
14059  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
14060  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
14061  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
14062  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
14063  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
14064  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
14065  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
14066  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
14067  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
14068  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
14069  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
14070  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
14071  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
14072  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
14073  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14074  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14075  case 0: break;
14076  default: goto __pyx_L5_argtuple_error;
14077  }
14078  kw_args = PyDict_Size(__pyx_kwds);
14079  switch (pos_args) {
14080  case 0:
14081  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
14082  else goto __pyx_L5_argtuple_error;
14083  case 1:
14084  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
14085  else {
14086  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14087  }
14088  case 2:
14089  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
14090  else {
14091  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14092  }
14093  case 3:
14094  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
14095  else {
14096  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14097  }
14098  case 4:
14099  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
14100  else {
14101  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14102  }
14103  case 5:
14104  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
14105  else {
14106  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14107  }
14108  case 6:
14109  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir0)) != 0)) kw_args--;
14110  else {
14111  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14112  }
14113  case 7:
14114  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
14115  else {
14116  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14117  }
14118  case 8:
14119  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
14120  else {
14121  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14122  }
14123  case 9:
14124  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
14125  else {
14126  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14127  }
14128  case 10:
14129  if (likely((values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
14130  else {
14131  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14132  }
14133  case 11:
14134  if (likely((values[11] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spreadName)) != 0)) kw_args--;
14135  else {
14136  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 11); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14137  }
14138  case 12:
14139  if (kw_args > 0) {
14140  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectral_params);
14141  if (value) { values[12] = value; kw_args--; }
14142  }
14143  case 13:
14144  if (kw_args > 0) {
14145  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spread_params);
14146  if (value) { values[13] = value; kw_args--; }
14147  }
14148  case 14:
14149  if (kw_args > 0) {
14150  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi);
14151  if (value) { values[14] = value; kw_args--; }
14152  }
14153  case 15:
14154  if (kw_args > 0) {
14155  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phiSymm);
14156  if (value) { values[15] = value; kw_args--; }
14157  }
14158  }
14159  if (unlikely(kw_args > 0)) {
14160  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14161  }
14162  } else {
14163  switch (PyTuple_GET_SIZE(__pyx_args)) {
14164  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
14165  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
14166  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
14167  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
14168  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
14169  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
14170  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
14171  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
14172  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
14173  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
14174  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
14175  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
14176  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
14177  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
14178  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14179  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14180  break;
14181  default: goto __pyx_L5_argtuple_error;
14182  }
14183  }
14184  __pyx_v_self = values[0];
14185  __pyx_v_M = values[1];
14186  __pyx_v_Tp = values[2];
14187  __pyx_v_Hs = values[3];
14188  __pyx_v_mwl = values[4];
14189  __pyx_v_depth = values[5];
14190  __pyx_v_waveDir0 = values[6];
14191  __pyx_v_g = values[7];
14192  __pyx_v_N = values[8];
14193  __pyx_v_bandFactor = values[9];
14194  __pyx_v_spectName = values[10];
14195  __pyx_v_spreadName = values[11];
14196  __pyx_v_spectral_params = values[12];
14197  __pyx_v_spread_params = values[13];
14198  __pyx_v_phi = values[14];
14199  __pyx_v_phiSymm = values[15];
14200  }
14201  goto __pyx_L4_argument_unpacking_done;
14202  __pyx_L5_argtuple_error:;
14203  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14204  __pyx_L3_error:;
14205  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14206  __Pyx_RefNannyFinishContext();
14207  return NULL;
14208  __pyx_L4_argument_unpacking_done:;
14209  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_M, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir0, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spreadName, __pyx_v_spectral_params, __pyx_v_spread_params, __pyx_v_phi, __pyx_v_phiSymm);
14210 
14211  /* "WaveTools.pyx":616
14212  *
14213  * """
14214  * def __init__(self, # <<<<<<<<<<<<<<
14215  * M, #half bin of frequencies
14216  * Tp, # np array with
14217  */
14218 
14219  /* function exit code */
14220  __Pyx_RefNannyFinishContext();
14221  return __pyx_r;
14222 }
14223 
14224 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_M, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir0, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spreadName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_spread_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_phiSymm) {
14225  PyObject *__pyx_v_validSpread = NULL;
14226  PyObject *__pyx_v_spread_fun = NULL;
14227  PyObject *__pyx_v_rotation3D = NULL;
14228  PyObject *__pyx_v_temp_array = NULL;
14229  PyObject *__pyx_v_directions = NULL;
14230  PyObject *__pyx_v_rr = NULL;
14231  PyObject *__pyx_v_theta = NULL;
14232  PyObject *__pyx_v_i = NULL;
14233  PyObject *__pyx_v_freq = NULL;
14234  PyObject *__pyx_v_ii = NULL;
14235  PyObject *__pyx_r = NULL;
14236  __Pyx_RefNannyDeclarations
14237  PyObject *__pyx_t_1 = NULL;
14238  PyObject *__pyx_t_2 = NULL;
14239  PyObject *__pyx_t_3 = NULL;
14240  Py_ssize_t __pyx_t_4;
14241  PyObject *__pyx_t_5 = NULL;
14242  PyObject *__pyx_t_6 = NULL;
14243  PyObject *__pyx_t_7 = NULL;
14244  PyObject *__pyx_t_8 = NULL;
14245  PyObject *(*__pyx_t_9)(PyObject *);
14246  Py_ssize_t __pyx_t_10;
14247  int __pyx_t_11;
14248  PyObject *__pyx_t_12 = NULL;
14249  PyObject *__pyx_t_13 = NULL;
14250  PyObject *__pyx_t_14 = NULL;
14251  PyObject *__pyx_t_15 = NULL;
14252  PyObject *__pyx_t_16 = NULL;
14253  int __pyx_lineno = 0;
14254  const char *__pyx_filename = NULL;
14255  int __pyx_clineno = 0;
14256  __Pyx_RefNannySetupContext("__init__", 0);
14257 
14258  /* "WaveTools.pyx":633
14259  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
14260  * ):
14261  * validSpread = [cos2s,mitsuyasu] # <<<<<<<<<<<<<<
14262  * spread_fun = loadExistingFunction(spreadName, validSpread)
14263  * self.M = M
14264  */
14265  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos2s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14266  __Pyx_GOTREF(__pyx_t_1);
14267  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_mitsuyasu); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14268  __Pyx_GOTREF(__pyx_t_2);
14269  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14270  __Pyx_GOTREF(__pyx_t_3);
14271  __Pyx_GIVEREF(__pyx_t_1);
14272  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
14273  __Pyx_GIVEREF(__pyx_t_2);
14274  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
14275  __pyx_t_1 = 0;
14276  __pyx_t_2 = 0;
14277  __pyx_v_validSpread = ((PyObject*)__pyx_t_3);
14278  __pyx_t_3 = 0;
14279 
14280  /* "WaveTools.pyx":634
14281  * ):
14282  * validSpread = [cos2s,mitsuyasu]
14283  * spread_fun = loadExistingFunction(spreadName, validSpread) # <<<<<<<<<<<<<<
14284  * self.M = M
14285  * self.Mtot = 2*M+1
14286  */
14287  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14288  __Pyx_GOTREF(__pyx_t_2);
14289  __pyx_t_1 = NULL;
14290  __pyx_t_4 = 0;
14291  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
14292  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
14293  if (likely(__pyx_t_1)) {
14294  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
14295  __Pyx_INCREF(__pyx_t_1);
14296  __Pyx_INCREF(function);
14297  __Pyx_DECREF_SET(__pyx_t_2, function);
14298  __pyx_t_4 = 1;
14299  }
14300  }
14301  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14302  __Pyx_GOTREF(__pyx_t_5);
14303  if (__pyx_t_1) {
14304  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
14305  }
14306  __Pyx_INCREF(__pyx_v_spreadName);
14307  __Pyx_GIVEREF(__pyx_v_spreadName);
14308  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_spreadName);
14309  __Pyx_INCREF(__pyx_v_validSpread);
14310  __Pyx_GIVEREF(__pyx_v_validSpread);
14311  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_validSpread);
14312  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14313  __Pyx_GOTREF(__pyx_t_3);
14314  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14315  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14316  __pyx_v_spread_fun = __pyx_t_3;
14317  __pyx_t_3 = 0;
14318 
14319  /* "WaveTools.pyx":635
14320  * validSpread = [cos2s,mitsuyasu]
14321  * spread_fun = loadExistingFunction(spreadName, validSpread)
14322  * self.M = M # <<<<<<<<<<<<<<
14323  * self.Mtot = 2*M+1
14324  * self.waveDir0 = setDirVector(waveDir0)
14325  */
14326  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_M, __pyx_v_M) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14327 
14328  /* "WaveTools.pyx":636
14329  * spread_fun = loadExistingFunction(spreadName, validSpread)
14330  * self.M = M
14331  * self.Mtot = 2*M+1 # <<<<<<<<<<<<<<
14332  * self.waveDir0 = setDirVector(waveDir0)
14333  * self.vDir = setVertDir(g)
14334  */
14335  __pyx_t_3 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14336  __Pyx_GOTREF(__pyx_t_3);
14337  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14338  __Pyx_GOTREF(__pyx_t_2);
14339  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14340  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Mtot, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14341  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14342 
14343  /* "WaveTools.pyx":637
14344  * self.M = M
14345  * self.Mtot = 2*M+1
14346  * self.waveDir0 = setDirVector(waveDir0) # <<<<<<<<<<<<<<
14347  * self.vDir = setVertDir(g)
14348  *
14349  */
14350  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14351  __Pyx_GOTREF(__pyx_t_3);
14352  __pyx_t_5 = NULL;
14353  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
14354  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
14355  if (likely(__pyx_t_5)) {
14356  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14357  __Pyx_INCREF(__pyx_t_5);
14358  __Pyx_INCREF(function);
14359  __Pyx_DECREF_SET(__pyx_t_3, function);
14360  }
14361  }
14362  if (!__pyx_t_5) {
14363  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_waveDir0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14364  __Pyx_GOTREF(__pyx_t_2);
14365  } else {
14366  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14367  __Pyx_GOTREF(__pyx_t_1);
14368  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
14369  __Pyx_INCREF(__pyx_v_waveDir0);
14370  __Pyx_GIVEREF(__pyx_v_waveDir0);
14371  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_waveDir0);
14372  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14373  __Pyx_GOTREF(__pyx_t_2);
14374  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14375  }
14376  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14377  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir0, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14378  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14379 
14380  /* "WaveTools.pyx":638
14381  * self.Mtot = 2*M+1
14382  * self.waveDir0 = setDirVector(waveDir0)
14383  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
14384  *
14385  *
14386  */
14387  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14388  __Pyx_GOTREF(__pyx_t_3);
14389  __pyx_t_1 = NULL;
14390  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
14391  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
14392  if (likely(__pyx_t_1)) {
14393  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14394  __Pyx_INCREF(__pyx_t_1);
14395  __Pyx_INCREF(function);
14396  __Pyx_DECREF_SET(__pyx_t_3, function);
14397  }
14398  }
14399  if (!__pyx_t_1) {
14400  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14401  __Pyx_GOTREF(__pyx_t_2);
14402  } else {
14403  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14404  __Pyx_GOTREF(__pyx_t_5);
14405  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
14406  __Pyx_INCREF(__pyx_v_g);
14407  __Pyx_GIVEREF(__pyx_v_g);
14408  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_g);
14409  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14410  __Pyx_GOTREF(__pyx_t_2);
14411  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14412  }
14413  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14414  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14415  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14416 
14417  /* "WaveTools.pyx":642
14418  *
14419  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
14420  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
14421  * Tp, # np array with
14422  * Hs,
14423  */
14424  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14425  __Pyx_GOTREF(__pyx_t_2);
14426  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14427  __Pyx_GOTREF(__pyx_t_3);
14428  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14429 
14430  /* "WaveTools.pyx":647
14431  * mwl,#m significant wave height
14432  * depth, #m depth
14433  * self.waveDir0, # <<<<<<<<<<<<<<
14434  * g, #peak frequency
14435  * N,
14436  */
14437  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14438  __Pyx_GOTREF(__pyx_t_2);
14439 
14440  /* "WaveTools.pyx":642
14441  *
14442  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
14443  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
14444  * Tp, # np array with
14445  * Hs,
14446  */
14447  __pyx_t_5 = PyTuple_New(11); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14448  __Pyx_GOTREF(__pyx_t_5);
14449  __Pyx_INCREF(__pyx_v_self);
14450  __Pyx_GIVEREF(__pyx_v_self);
14451  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self);
14452  __Pyx_INCREF(__pyx_v_Tp);
14453  __Pyx_GIVEREF(__pyx_v_Tp);
14454  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_Tp);
14455  __Pyx_INCREF(__pyx_v_Hs);
14456  __Pyx_GIVEREF(__pyx_v_Hs);
14457  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_Hs);
14458  __Pyx_INCREF(__pyx_v_mwl);
14459  __Pyx_GIVEREF(__pyx_v_mwl);
14460  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_mwl);
14461  __Pyx_INCREF(__pyx_v_depth);
14462  __Pyx_GIVEREF(__pyx_v_depth);
14463  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_depth);
14464  __Pyx_GIVEREF(__pyx_t_2);
14465  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_2);
14466  __Pyx_INCREF(__pyx_v_g);
14467  __Pyx_GIVEREF(__pyx_v_g);
14468  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_v_g);
14469  __Pyx_INCREF(__pyx_v_N);
14470  __Pyx_GIVEREF(__pyx_v_N);
14471  PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_v_N);
14472  __Pyx_INCREF(__pyx_v_bandFactor);
14473  __Pyx_GIVEREF(__pyx_v_bandFactor);
14474  PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_v_bandFactor);
14475  __Pyx_INCREF(__pyx_v_spectName);
14476  __Pyx_GIVEREF(__pyx_v_spectName);
14477  PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_v_spectName);
14478  __Pyx_INCREF(__pyx_v_spectral_params);
14479  __Pyx_GIVEREF(__pyx_v_spectral_params);
14480  PyTuple_SET_ITEM(__pyx_t_5, 10, __pyx_v_spectral_params);
14481  __pyx_t_2 = 0;
14482 
14483  /* "WaveTools.pyx":653
14484  * spectName,# random words will result in error and return the available spectra
14485  * spectral_params, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
14486  * phi = None # <<<<<<<<<<<<<<
14487  * )
14488  *
14489  */
14490  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14491  __Pyx_GOTREF(__pyx_t_2);
14492  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_phi, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14493 
14494  /* "WaveTools.pyx":642
14495  *
14496  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
14497  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
14498  * Tp, # np array with
14499  * Hs,
14500  */
14501  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14502  __Pyx_GOTREF(__pyx_t_1);
14503  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14504  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14505  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14506  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14507 
14508  /* "WaveTools.pyx":659
14509  *
14510  * # Directional waves propagate usually in a plane -90 to 90 deg with respect to the direction vector, normal to the gavity direction. Rotating the waveDir0 vector around the g vector to produce the directional space
14511  * from SpatialTools import rotation3D # <<<<<<<<<<<<<<
14512  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1)
14513  * self.dth = (self.thetas[1] - self.thetas[0])
14514  */
14515  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14516  __Pyx_GOTREF(__pyx_t_1);
14517  __Pyx_INCREF(__pyx_n_s_rotation3D);
14518  __Pyx_GIVEREF(__pyx_n_s_rotation3D);
14519  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_rotation3D);
14520  __pyx_t_2 = __Pyx_Import(__pyx_n_s_SpatialTools, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14521  __Pyx_GOTREF(__pyx_t_2);
14522  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14523  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_rotation3D); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14524  __Pyx_GOTREF(__pyx_t_1);
14525  __Pyx_INCREF(__pyx_t_1);
14526  __pyx_v_rotation3D = __pyx_t_1;
14527  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14528  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14529 
14530  /* "WaveTools.pyx":660
14531  * # Directional waves propagate usually in a plane -90 to 90 deg with respect to the direction vector, normal to the gavity direction. Rotating the waveDir0 vector around the g vector to produce the directional space
14532  * from SpatialTools import rotation3D
14533  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1) # <<<<<<<<<<<<<<
14534  * self.dth = (self.thetas[1] - self.thetas[0])
14535  * self.waveDirs = np.zeros((2*M+1,3),)
14536  */
14537  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14538  __Pyx_GOTREF(__pyx_t_1);
14539  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14540  __Pyx_GOTREF(__pyx_t_5);
14541  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14542  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14543  __Pyx_GOTREF(__pyx_t_1);
14544  __pyx_t_3 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14545  __Pyx_GOTREF(__pyx_t_3);
14546  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14547  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_int_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14548  __Pyx_GOTREF(__pyx_t_1);
14549  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14550  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14551  __Pyx_GOTREF(__pyx_t_3);
14552  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_int_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14553  __Pyx_GOTREF(__pyx_t_6);
14554  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14555  __pyx_t_3 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14556  __Pyx_GOTREF(__pyx_t_3);
14557  __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14558  __Pyx_GOTREF(__pyx_t_7);
14559  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14560  __pyx_t_3 = NULL;
14561  __pyx_t_4 = 0;
14562  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
14563  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
14564  if (likely(__pyx_t_3)) {
14565  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14566  __Pyx_INCREF(__pyx_t_3);
14567  __Pyx_INCREF(function);
14568  __Pyx_DECREF_SET(__pyx_t_5, function);
14569  __pyx_t_4 = 1;
14570  }
14571  }
14572  __pyx_t_8 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14573  __Pyx_GOTREF(__pyx_t_8);
14574  if (__pyx_t_3) {
14575  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
14576  }
14577  __Pyx_GIVEREF(__pyx_t_1);
14578  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_t_1);
14579  __Pyx_GIVEREF(__pyx_t_6);
14580  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_t_6);
14581  __Pyx_GIVEREF(__pyx_t_7);
14582  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_t_7);
14583  __pyx_t_1 = 0;
14584  __pyx_t_6 = 0;
14585  __pyx_t_7 = 0;
14586  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14587  __Pyx_GOTREF(__pyx_t_2);
14588  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14589  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14590  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thetas, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14591  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14592 
14593  /* "WaveTools.pyx":661
14594  * from SpatialTools import rotation3D
14595  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1)
14596  * self.dth = (self.thetas[1] - self.thetas[0]) # <<<<<<<<<<<<<<
14597  * self.waveDirs = np.zeros((2*M+1,3),)
14598  * self.phiDirs = np.zeros((2*M+1,N),)
14599  */
14600  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14601  __Pyx_GOTREF(__pyx_t_2);
14602  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14603  __Pyx_GOTREF(__pyx_t_5);
14604  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14605  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14606  __Pyx_GOTREF(__pyx_t_2);
14607  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14608  __Pyx_GOTREF(__pyx_t_8);
14609  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14610  __pyx_t_2 = PyNumber_Subtract(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14611  __Pyx_GOTREF(__pyx_t_2);
14612  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14613  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14614  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dth, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14615  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14616 
14617  /* "WaveTools.pyx":662
14618  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1)
14619  * self.dth = (self.thetas[1] - self.thetas[0])
14620  * self.waveDirs = np.zeros((2*M+1,3),) # <<<<<<<<<<<<<<
14621  * self.phiDirs = np.zeros((2*M+1,N),)
14622  * self.aiDirs = np.zeros((2*M+1,N),)
14623  */
14624  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14625  __Pyx_GOTREF(__pyx_t_8);
14626  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14627  __Pyx_GOTREF(__pyx_t_5);
14628  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14629  __pyx_t_8 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14630  __Pyx_GOTREF(__pyx_t_8);
14631  __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_8, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14632  __Pyx_GOTREF(__pyx_t_7);
14633  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14634  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14635  __Pyx_GOTREF(__pyx_t_8);
14636  __Pyx_GIVEREF(__pyx_t_7);
14637  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
14638  __Pyx_INCREF(__pyx_int_3);
14639  __Pyx_GIVEREF(__pyx_int_3);
14640  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_3);
14641  __pyx_t_7 = 0;
14642  __pyx_t_7 = NULL;
14643  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
14644  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
14645  if (likely(__pyx_t_7)) {
14646  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14647  __Pyx_INCREF(__pyx_t_7);
14648  __Pyx_INCREF(function);
14649  __Pyx_DECREF_SET(__pyx_t_5, function);
14650  }
14651  }
14652  if (!__pyx_t_7) {
14653  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14654  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14655  __Pyx_GOTREF(__pyx_t_2);
14656  } else {
14657  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14658  __Pyx_GOTREF(__pyx_t_6);
14659  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
14660  __Pyx_GIVEREF(__pyx_t_8);
14661  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_8);
14662  __pyx_t_8 = 0;
14663  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14664  __Pyx_GOTREF(__pyx_t_2);
14665  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14666  }
14667  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14668  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14669  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14670 
14671  /* "WaveTools.pyx":663
14672  * self.dth = (self.thetas[1] - self.thetas[0])
14673  * self.waveDirs = np.zeros((2*M+1,3),)
14674  * self.phiDirs = np.zeros((2*M+1,N),) # <<<<<<<<<<<<<<
14675  * self.aiDirs = np.zeros((2*M+1,N),)
14676  *
14677  */
14678  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14679  __Pyx_GOTREF(__pyx_t_5);
14680  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14681  __Pyx_GOTREF(__pyx_t_6);
14682  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14683  __pyx_t_5 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14684  __Pyx_GOTREF(__pyx_t_5);
14685  __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14686  __Pyx_GOTREF(__pyx_t_8);
14687  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14688  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14689  __Pyx_GOTREF(__pyx_t_5);
14690  __Pyx_GIVEREF(__pyx_t_8);
14691  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
14692  __Pyx_INCREF(__pyx_v_N);
14693  __Pyx_GIVEREF(__pyx_v_N);
14694  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_N);
14695  __pyx_t_8 = 0;
14696  __pyx_t_8 = NULL;
14697  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
14698  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
14699  if (likely(__pyx_t_8)) {
14700  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
14701  __Pyx_INCREF(__pyx_t_8);
14702  __Pyx_INCREF(function);
14703  __Pyx_DECREF_SET(__pyx_t_6, function);
14704  }
14705  }
14706  if (!__pyx_t_8) {
14707  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14708  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14709  __Pyx_GOTREF(__pyx_t_2);
14710  } else {
14711  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14712  __Pyx_GOTREF(__pyx_t_7);
14713  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
14714  __Pyx_GIVEREF(__pyx_t_5);
14715  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
14716  __pyx_t_5 = 0;
14717  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14718  __Pyx_GOTREF(__pyx_t_2);
14719  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14720  }
14721  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14722  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14723  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14724 
14725  /* "WaveTools.pyx":664
14726  * self.waveDirs = np.zeros((2*M+1,3),)
14727  * self.phiDirs = np.zeros((2*M+1,N),)
14728  * self.aiDirs = np.zeros((2*M+1,N),) # <<<<<<<<<<<<<<
14729  *
14730  *
14731  */
14732  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14733  __Pyx_GOTREF(__pyx_t_6);
14734  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14735  __Pyx_GOTREF(__pyx_t_7);
14736  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14737  __pyx_t_6 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14738  __Pyx_GOTREF(__pyx_t_6);
14739  __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14740  __Pyx_GOTREF(__pyx_t_5);
14741  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14742  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14743  __Pyx_GOTREF(__pyx_t_6);
14744  __Pyx_GIVEREF(__pyx_t_5);
14745  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
14746  __Pyx_INCREF(__pyx_v_N);
14747  __Pyx_GIVEREF(__pyx_v_N);
14748  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_N);
14749  __pyx_t_5 = 0;
14750  __pyx_t_5 = NULL;
14751  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
14752  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
14753  if (likely(__pyx_t_5)) {
14754  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
14755  __Pyx_INCREF(__pyx_t_5);
14756  __Pyx_INCREF(function);
14757  __Pyx_DECREF_SET(__pyx_t_7, function);
14758  }
14759  }
14760  if (!__pyx_t_5) {
14761  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14762  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14763  __Pyx_GOTREF(__pyx_t_2);
14764  } else {
14765  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14766  __Pyx_GOTREF(__pyx_t_8);
14767  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
14768  __Pyx_GIVEREF(__pyx_t_6);
14769  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
14770  __pyx_t_6 = 0;
14771  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14772  __Pyx_GOTREF(__pyx_t_2);
14773  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14774  }
14775  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14776  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14777  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14778 
14779  /* "WaveTools.pyx":667
14780  *
14781  *
14782  * temp_array = np.zeros((1,3),) # <<<<<<<<<<<<<<
14783  * temp_array[0,:] = waveDir0
14784  * directions = range(0,self.Mtot)
14785  */
14786  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14787  __Pyx_GOTREF(__pyx_t_2);
14788  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14789  __Pyx_GOTREF(__pyx_t_7);
14790  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14791  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14792  __Pyx_GOTREF(__pyx_t_2);
14793  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14794  __pyx_v_temp_array = __pyx_t_2;
14795  __pyx_t_2 = 0;
14796 
14797  /* "WaveTools.pyx":668
14798  *
14799  * temp_array = np.zeros((1,3),)
14800  * temp_array[0,:] = waveDir0 # <<<<<<<<<<<<<<
14801  * directions = range(0,self.Mtot)
14802  *
14803  */
14804  if (unlikely(PyObject_SetItem(__pyx_v_temp_array, __pyx_tuple__63, __pyx_v_waveDir0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14805 
14806  /* "WaveTools.pyx":669
14807  * temp_array = np.zeros((1,3),)
14808  * temp_array[0,:] = waveDir0
14809  * directions = range(0,self.Mtot) # <<<<<<<<<<<<<<
14810  *
14811  * # initialising wave directions
14812  */
14813  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14814  __Pyx_GOTREF(__pyx_t_2);
14815  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14816  __Pyx_GOTREF(__pyx_t_7);
14817  __Pyx_INCREF(__pyx_int_0);
14818  __Pyx_GIVEREF(__pyx_int_0);
14819  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_int_0);
14820  __Pyx_GIVEREF(__pyx_t_2);
14821  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
14822  __pyx_t_2 = 0;
14823  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14824  __Pyx_GOTREF(__pyx_t_2);
14825  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14826  __pyx_v_directions = __pyx_t_2;
14827  __pyx_t_2 = 0;
14828 
14829  /* "WaveTools.pyx":672
14830  *
14831  * # initialising wave directions
14832  * for rr in directions: # <<<<<<<<<<<<<<
14833  * theta = self.thetas[rr]
14834  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
14835  */
14836  if (likely(PyList_CheckExact(__pyx_v_directions)) || PyTuple_CheckExact(__pyx_v_directions)) {
14837  __pyx_t_2 = __pyx_v_directions; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
14838  __pyx_t_9 = NULL;
14839  } else {
14840  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_directions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14841  __Pyx_GOTREF(__pyx_t_2);
14842  __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14843  }
14844  for (;;) {
14845  if (likely(!__pyx_t_9)) {
14846  if (likely(PyList_CheckExact(__pyx_t_2))) {
14847  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
14848  #if CYTHON_COMPILING_IN_CPYTHON
14849  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14850  #else
14851  __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14852  __Pyx_GOTREF(__pyx_t_7);
14853  #endif
14854  } else {
14855  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
14856  #if CYTHON_COMPILING_IN_CPYTHON
14857  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14858  #else
14859  __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14860  __Pyx_GOTREF(__pyx_t_7);
14861  #endif
14862  }
14863  } else {
14864  __pyx_t_7 = __pyx_t_9(__pyx_t_2);
14865  if (unlikely(!__pyx_t_7)) {
14866  PyObject* exc_type = PyErr_Occurred();
14867  if (exc_type) {
14868  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
14869  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14870  }
14871  break;
14872  }
14873  __Pyx_GOTREF(__pyx_t_7);
14874  }
14875  __Pyx_XDECREF_SET(__pyx_v_rr, __pyx_t_7);
14876  __pyx_t_7 = 0;
14877 
14878  /* "WaveTools.pyx":673
14879  * # initialising wave directions
14880  * for rr in directions:
14881  * theta = self.thetas[rr] # <<<<<<<<<<<<<<
14882  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
14883  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
14884  */
14885  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14886  __Pyx_GOTREF(__pyx_t_7);
14887  __pyx_t_8 = PyObject_GetItem(__pyx_t_7, __pyx_v_rr); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14888  __Pyx_GOTREF(__pyx_t_8);
14889  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14890  __Pyx_XDECREF_SET(__pyx_v_theta, __pyx_t_8);
14891  __pyx_t_8 = 0;
14892 
14893  /* "WaveTools.pyx":674
14894  * for rr in directions:
14895  * theta = self.thetas[rr]
14896  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:] # <<<<<<<<<<<<<<
14897  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
14898  *
14899  */
14900  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14901  __Pyx_GOTREF(__pyx_t_7);
14902  __Pyx_INCREF(__pyx_v_rotation3D);
14903  __pyx_t_6 = __pyx_v_rotation3D; __pyx_t_5 = NULL;
14904  __pyx_t_10 = 0;
14905  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
14906  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
14907  if (likely(__pyx_t_5)) {
14908  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
14909  __Pyx_INCREF(__pyx_t_5);
14910  __Pyx_INCREF(function);
14911  __Pyx_DECREF_SET(__pyx_t_6, function);
14912  __pyx_t_10 = 1;
14913  }
14914  }
14915  __pyx_t_1 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14916  __Pyx_GOTREF(__pyx_t_1);
14917  if (__pyx_t_5) {
14918  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
14919  }
14920  __Pyx_INCREF(__pyx_v_temp_array);
14921  __Pyx_GIVEREF(__pyx_v_temp_array);
14922  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_v_temp_array);
14923  __Pyx_INCREF(__pyx_v_theta);
14924  __Pyx_GIVEREF(__pyx_v_theta);
14925  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_v_theta);
14926  __Pyx_GIVEREF(__pyx_t_7);
14927  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_10, __pyx_t_7);
14928  __pyx_t_7 = 0;
14929  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14930  __Pyx_GOTREF(__pyx_t_8);
14931  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14932  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14933  __pyx_t_6 = PyObject_GetItem(__pyx_t_8, __pyx_tuple__65); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14934  __Pyx_GOTREF(__pyx_t_6);
14935  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14936  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14937  __Pyx_GOTREF(__pyx_t_8);
14938  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14939  __Pyx_GOTREF(__pyx_t_1);
14940  __Pyx_INCREF(__pyx_v_rr);
14941  __Pyx_GIVEREF(__pyx_v_rr);
14942  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_rr);
14943  __Pyx_INCREF(__pyx_slice__66);
14944  __Pyx_GIVEREF(__pyx_slice__66);
14945  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_slice__66);
14946  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_1, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14947  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14948  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14949  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14950 
14951  /* "WaveTools.pyx":675
14952  * theta = self.thetas[rr]
14953  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
14954  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:]) # <<<<<<<<<<<<<<
14955  *
14956  *
14957  */
14958  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14959  __Pyx_GOTREF(__pyx_t_1);
14960  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14961  __Pyx_GOTREF(__pyx_t_8);
14962  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14963  __Pyx_GOTREF(__pyx_t_7);
14964  __Pyx_INCREF(__pyx_v_rr);
14965  __Pyx_GIVEREF(__pyx_v_rr);
14966  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_rr);
14967  __Pyx_INCREF(__pyx_slice__67);
14968  __Pyx_GIVEREF(__pyx_slice__67);
14969  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_slice__67);
14970  __pyx_t_5 = PyObject_GetItem(__pyx_t_8, __pyx_t_7); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14971  __Pyx_GOTREF(__pyx_t_5);
14972  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14973  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14974  __pyx_t_7 = NULL;
14975  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
14976  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
14977  if (likely(__pyx_t_7)) {
14978  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
14979  __Pyx_INCREF(__pyx_t_7);
14980  __Pyx_INCREF(function);
14981  __Pyx_DECREF_SET(__pyx_t_1, function);
14982  }
14983  }
14984  if (!__pyx_t_7) {
14985  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14986  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14987  __Pyx_GOTREF(__pyx_t_6);
14988  } else {
14989  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14990  __Pyx_GOTREF(__pyx_t_8);
14991  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
14992  __Pyx_GIVEREF(__pyx_t_5);
14993  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
14994  __pyx_t_5 = 0;
14995  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14996  __Pyx_GOTREF(__pyx_t_6);
14997  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14998  }
14999  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15000  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15001  __Pyx_GOTREF(__pyx_t_1);
15002  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15003  __Pyx_GOTREF(__pyx_t_8);
15004  __Pyx_INCREF(__pyx_v_rr);
15005  __Pyx_GIVEREF(__pyx_v_rr);
15006  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_rr);
15007  __Pyx_INCREF(__pyx_slice__68);
15008  __Pyx_GIVEREF(__pyx_slice__68);
15009  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_slice__68);
15010  if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_8, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15011  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15012  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15013  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15014 
15015  /* "WaveTools.pyx":672
15016  *
15017  * # initialising wave directions
15018  * for rr in directions: # <<<<<<<<<<<<<<
15019  * theta = self.thetas[rr]
15020  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
15021  */
15022  }
15023  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15024 
15025  /* "WaveTools.pyx":679
15026  *
15027  * # Initialising phasing
15028  * if phi == None: # <<<<<<<<<<<<<<
15029  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15030  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
15031  */
15032  __pyx_t_2 = PyObject_RichCompare(__pyx_v_phi, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15033  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15034  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15035  if (__pyx_t_11) {
15036 
15037  /* "WaveTools.pyx":680
15038  * # Initialising phasing
15039  * if phi == None:
15040  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0]) # <<<<<<<<<<<<<<
15041  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
15042  * self.phiDirs = phi
15043  */
15044  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15045  __Pyx_GOTREF(__pyx_t_2);
15046  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15047  __Pyx_GOTREF(__pyx_t_6);
15048  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15049  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15050  __Pyx_GOTREF(__pyx_t_8);
15051  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15052  __Pyx_GOTREF(__pyx_t_1);
15053  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15054  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_rand); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15055  __Pyx_GOTREF(__pyx_t_8);
15056  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15057  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15058  __Pyx_GOTREF(__pyx_t_1);
15059  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15060  __Pyx_GOTREF(__pyx_t_5);
15061  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15062  __Pyx_GOTREF(__pyx_t_7);
15063  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15064  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15065  __Pyx_GOTREF(__pyx_t_5);
15066  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15067  __pyx_t_7 = NULL;
15068  __pyx_t_4 = 0;
15069  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
15070  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
15071  if (likely(__pyx_t_7)) {
15072  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15073  __Pyx_INCREF(__pyx_t_7);
15074  __Pyx_INCREF(function);
15075  __Pyx_DECREF_SET(__pyx_t_8, function);
15076  __pyx_t_4 = 1;
15077  }
15078  }
15079  __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15080  __Pyx_GOTREF(__pyx_t_3);
15081  if (__pyx_t_7) {
15082  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
15083  }
15084  __Pyx_GIVEREF(__pyx_t_1);
15085  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_t_1);
15086  __Pyx_GIVEREF(__pyx_t_5);
15087  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_t_5);
15088  __pyx_t_1 = 0;
15089  __pyx_t_5 = 0;
15090  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15091  __Pyx_GOTREF(__pyx_t_2);
15092  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15093  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15094  __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15095  __Pyx_GOTREF(__pyx_t_8);
15096  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15097  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15098  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15099  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15100 
15101  /* "WaveTools.pyx":679
15102  *
15103  * # Initialising phasing
15104  * if phi == None: # <<<<<<<<<<<<<<
15105  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15106  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
15107  */
15108  goto __pyx_L5;
15109  }
15110 
15111  /* "WaveTools.pyx":681
15112  * if phi == None:
15113  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15114  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]): # <<<<<<<<<<<<<<
15115  * self.phiDirs = phi
15116  * else:
15117  */
15118  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15119  __Pyx_GOTREF(__pyx_t_2);
15120  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15121  __Pyx_GOTREF(__pyx_t_6);
15122  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15123  __pyx_t_2 = NULL;
15124  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
15125  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
15126  if (likely(__pyx_t_2)) {
15127  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
15128  __Pyx_INCREF(__pyx_t_2);
15129  __Pyx_INCREF(function);
15130  __Pyx_DECREF_SET(__pyx_t_6, function);
15131  }
15132  }
15133  if (!__pyx_t_2) {
15134  __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_phi); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15135  __Pyx_GOTREF(__pyx_t_8);
15136  } else {
15137  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15138  __Pyx_GOTREF(__pyx_t_3);
15139  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
15140  __Pyx_INCREF(__pyx_v_phi);
15141  __Pyx_GIVEREF(__pyx_v_phi);
15142  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_phi);
15143  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15144  __Pyx_GOTREF(__pyx_t_8);
15145  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15146  }
15147  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15148  __pyx_t_6 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15149  __Pyx_GOTREF(__pyx_t_6);
15150  __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15151  __Pyx_GOTREF(__pyx_t_3);
15152  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15153  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15154  __Pyx_GOTREF(__pyx_t_6);
15155  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15156  __Pyx_GOTREF(__pyx_t_2);
15157  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15158  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15159  __Pyx_GOTREF(__pyx_t_6);
15160  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15161  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15162  __Pyx_GOTREF(__pyx_t_2);
15163  __Pyx_GIVEREF(__pyx_t_3);
15164  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
15165  __Pyx_GIVEREF(__pyx_t_6);
15166  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
15167  __pyx_t_3 = 0;
15168  __pyx_t_6 = 0;
15169  __pyx_t_6 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15170  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15171  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15172  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15173  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15174  if (__pyx_t_11) {
15175 
15176  /* "WaveTools.pyx":682
15177  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15178  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
15179  * self.phiDirs = phi # <<<<<<<<<<<<<<
15180  * else:
15181  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
15182  */
15183  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs, __pyx_v_phi) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15184 
15185  /* "WaveTools.pyx":681
15186  * if phi == None:
15187  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15188  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]): # <<<<<<<<<<<<<<
15189  * self.phiDirs = phi
15190  * else:
15191  */
15192  goto __pyx_L5;
15193  }
15194 
15195  /* "WaveTools.pyx":684
15196  * self.phiDirs = phi
15197  * else:
15198  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N") # <<<<<<<<<<<<<<
15199  * sys.exit(1)
15200  *
15201  */
15202  /*else*/ {
15203  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15204  __Pyx_GOTREF(__pyx_t_6);
15205  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15206  __Pyx_GOTREF(__pyx_t_2);
15207  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15208  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15209 
15210  /* "WaveTools.pyx":685
15211  * else:
15212  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
15213  * sys.exit(1) # <<<<<<<<<<<<<<
15214  *
15215  * if (phiSymm):
15216  */
15217  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15218  __Pyx_GOTREF(__pyx_t_2);
15219  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15220  __Pyx_GOTREF(__pyx_t_6);
15221  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15222  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15223  __Pyx_GOTREF(__pyx_t_2);
15224  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15225  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15226  }
15227  __pyx_L5:;
15228 
15229  /* "WaveTools.pyx":687
15230  * sys.exit(1)
15231  *
15232  * if (phiSymm): # <<<<<<<<<<<<<<
15233  * for i in range(0,M):
15234  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15235  */
15236  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_phiSymm); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15237  if (__pyx_t_11) {
15238 
15239  /* "WaveTools.pyx":688
15240  *
15241  * if (phiSymm):
15242  * for i in range(0,M): # <<<<<<<<<<<<<<
15243  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15244  *
15245  */
15246  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15247  __Pyx_GOTREF(__pyx_t_2);
15248  __Pyx_INCREF(__pyx_int_0);
15249  __Pyx_GIVEREF(__pyx_int_0);
15250  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
15251  __Pyx_INCREF(__pyx_v_M);
15252  __Pyx_GIVEREF(__pyx_v_M);
15253  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_M);
15254  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15255  __Pyx_GOTREF(__pyx_t_6);
15256  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15257  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
15258  __pyx_t_2 = __pyx_t_6; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
15259  __pyx_t_9 = NULL;
15260  } else {
15261  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15262  __Pyx_GOTREF(__pyx_t_2);
15263  __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15264  }
15265  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15266  for (;;) {
15267  if (likely(!__pyx_t_9)) {
15268  if (likely(PyList_CheckExact(__pyx_t_2))) {
15269  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
15270  #if CYTHON_COMPILING_IN_CPYTHON
15271  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15272  #else
15273  __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15274  __Pyx_GOTREF(__pyx_t_6);
15275  #endif
15276  } else {
15277  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
15278  #if CYTHON_COMPILING_IN_CPYTHON
15279  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15280  #else
15281  __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15282  __Pyx_GOTREF(__pyx_t_6);
15283  #endif
15284  }
15285  } else {
15286  __pyx_t_6 = __pyx_t_9(__pyx_t_2);
15287  if (unlikely(!__pyx_t_6)) {
15288  PyObject* exc_type = PyErr_Occurred();
15289  if (exc_type) {
15290  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
15291  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15292  }
15293  break;
15294  }
15295  __Pyx_GOTREF(__pyx_t_6);
15296  }
15297  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6);
15298  __pyx_t_6 = 0;
15299 
15300  /* "WaveTools.pyx":689
15301  * if (phiSymm):
15302  * for i in range(0,M):
15303  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:] # <<<<<<<<<<<<<<
15304  *
15305  *
15306  */
15307  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15308  __Pyx_GOTREF(__pyx_t_6);
15309  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_M); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15310  __Pyx_GOTREF(__pyx_t_8);
15311  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_8, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15312  __Pyx_GOTREF(__pyx_t_3);
15313  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15314  __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15315  __Pyx_GOTREF(__pyx_t_8);
15316  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15317  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15318  __Pyx_GOTREF(__pyx_t_3);
15319  __Pyx_GIVEREF(__pyx_t_8);
15320  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
15321  __Pyx_INCREF(__pyx_slice__71);
15322  __Pyx_GIVEREF(__pyx_slice__71);
15323  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__71);
15324  __pyx_t_8 = 0;
15325  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_t_3); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15326  __Pyx_GOTREF(__pyx_t_8);
15327  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15328  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15329  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15330  __Pyx_GOTREF(__pyx_t_3);
15331  __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_M, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15332  __Pyx_GOTREF(__pyx_t_6);
15333  __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15334  __Pyx_GOTREF(__pyx_t_5);
15335  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15336  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15337  __Pyx_GOTREF(__pyx_t_6);
15338  __Pyx_GIVEREF(__pyx_t_5);
15339  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
15340  __Pyx_INCREF(__pyx_slice__72);
15341  __Pyx_GIVEREF(__pyx_slice__72);
15342  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__72);
15343  __pyx_t_5 = 0;
15344  if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_6, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15345  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15346  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15347  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15348 
15349  /* "WaveTools.pyx":688
15350  *
15351  * if (phiSymm):
15352  * for i in range(0,M): # <<<<<<<<<<<<<<
15353  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15354  *
15355  */
15356  }
15357  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15358 
15359  /* "WaveTools.pyx":687
15360  * sys.exit(1)
15361  *
15362  * if (phiSymm): # <<<<<<<<<<<<<<
15363  * for i in range(0,M):
15364  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15365  */
15366  }
15367 
15368  /* "WaveTools.pyx":694
15369  *
15370  *
15371  * self.theta_m = reduceToIntervals(self.thetas,self.dth) # <<<<<<<<<<<<<<
15372  * if (spread_params == None):
15373  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15374  */
15375  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_reduceToIntervals); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15376  __Pyx_GOTREF(__pyx_t_8);
15377  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15378  __Pyx_GOTREF(__pyx_t_6);
15379  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dth); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15380  __Pyx_GOTREF(__pyx_t_3);
15381  __pyx_t_5 = NULL;
15382  __pyx_t_4 = 0;
15383  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
15384  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
15385  if (likely(__pyx_t_5)) {
15386  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15387  __Pyx_INCREF(__pyx_t_5);
15388  __Pyx_INCREF(function);
15389  __Pyx_DECREF_SET(__pyx_t_8, function);
15390  __pyx_t_4 = 1;
15391  }
15392  }
15393  __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15394  __Pyx_GOTREF(__pyx_t_1);
15395  if (__pyx_t_5) {
15396  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
15397  }
15398  __Pyx_GIVEREF(__pyx_t_6);
15399  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_6);
15400  __Pyx_GIVEREF(__pyx_t_3);
15401  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_t_3);
15402  __pyx_t_6 = 0;
15403  __pyx_t_3 = 0;
15404  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15405  __Pyx_GOTREF(__pyx_t_2);
15406  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15407  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15408  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_theta_m, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15409  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15410 
15411  /* "WaveTools.pyx":695
15412  *
15413  * self.theta_m = reduceToIntervals(self.thetas,self.dth)
15414  * if (spread_params == None): # <<<<<<<<<<<<<<
15415  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15416  * else:
15417  */
15418  __pyx_t_2 = PyObject_RichCompare(__pyx_v_spread_params, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15419  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15420  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15421  if (__pyx_t_11) {
15422 
15423  /* "WaveTools.pyx":696
15424  * self.theta_m = reduceToIntervals(self.thetas,self.dth)
15425  * if (spread_params == None):
15426  * self.Si_Sp = spread_fun(self.theta_m,self.fim) # <<<<<<<<<<<<<<
15427  * else:
15428  * try:
15429  */
15430  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15431  __Pyx_GOTREF(__pyx_t_8);
15432  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15433  __Pyx_GOTREF(__pyx_t_1);
15434  __Pyx_INCREF(__pyx_v_spread_fun);
15435  __pyx_t_3 = __pyx_v_spread_fun; __pyx_t_6 = NULL;
15436  __pyx_t_4 = 0;
15437  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
15438  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
15439  if (likely(__pyx_t_6)) {
15440  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
15441  __Pyx_INCREF(__pyx_t_6);
15442  __Pyx_INCREF(function);
15443  __Pyx_DECREF_SET(__pyx_t_3, function);
15444  __pyx_t_4 = 1;
15445  }
15446  }
15447  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15448  __Pyx_GOTREF(__pyx_t_5);
15449  if (__pyx_t_6) {
15450  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
15451  }
15452  __Pyx_GIVEREF(__pyx_t_8);
15453  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_t_8);
15454  __Pyx_GIVEREF(__pyx_t_1);
15455  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_t_1);
15456  __pyx_t_8 = 0;
15457  __pyx_t_1 = 0;
15458  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15459  __Pyx_GOTREF(__pyx_t_2);
15460  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15461  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15462  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15463  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15464 
15465  /* "WaveTools.pyx":695
15466  *
15467  * self.theta_m = reduceToIntervals(self.thetas,self.dth)
15468  * if (spread_params == None): # <<<<<<<<<<<<<<
15469  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15470  * else:
15471  */
15472  goto __pyx_L9;
15473  }
15474 
15475  /* "WaveTools.pyx":698
15476  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15477  * else:
15478  * try: # <<<<<<<<<<<<<<
15479  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15480  * except:
15481  */
15482  /*else*/ {
15483  {
15484  __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
15485  __Pyx_XGOTREF(__pyx_t_12);
15486  __Pyx_XGOTREF(__pyx_t_13);
15487  __Pyx_XGOTREF(__pyx_t_14);
15488  /*try:*/ {
15489 
15490  /* "WaveTools.pyx":699
15491  * else:
15492  * try:
15493  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params) # <<<<<<<<<<<<<<
15494  * except:
15495  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
15496  */
15497  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15498  __Pyx_GOTREF(__pyx_t_2);
15499  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15500  __Pyx_GOTREF(__pyx_t_3);
15501  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15502  __Pyx_GOTREF(__pyx_t_5);
15503  __Pyx_GIVEREF(__pyx_t_2);
15504  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
15505  __Pyx_GIVEREF(__pyx_t_3);
15506  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
15507  __pyx_t_2 = 0;
15508  __pyx_t_3 = 0;
15509  if (unlikely(__pyx_v_spread_params == Py_None)) {
15510  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
15511  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15512  }
15513  if (likely(PyDict_CheckExact(__pyx_v_spread_params))) {
15514  __pyx_t_3 = PyDict_Copy(__pyx_v_spread_params); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15515  __Pyx_GOTREF(__pyx_t_3);
15516  } else {
15517  __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_spread_params, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15518  __Pyx_GOTREF(__pyx_t_3);
15519  }
15520  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_spread_fun, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15521  __Pyx_GOTREF(__pyx_t_2);
15522  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15523  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15524  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15525  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15526 
15527  /* "WaveTools.pyx":698
15528  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15529  * else:
15530  * try: # <<<<<<<<<<<<<<
15531  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15532  * except:
15533  */
15534  }
15535  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
15536  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
15537  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
15538  goto __pyx_L17_try_end;
15539  __pyx_L10_error:;
15540  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
15541  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
15542  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
15543  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
15544  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
15545  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
15546  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
15547 
15548  /* "WaveTools.pyx":700
15549  * try:
15550  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15551  * except: # <<<<<<<<<<<<<<
15552  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
15553  * sys.exit(1)
15554  */
15555  /*except:*/ {
15556  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15557  if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15558  __Pyx_GOTREF(__pyx_t_2);
15559  __Pyx_GOTREF(__pyx_t_3);
15560  __Pyx_GOTREF(__pyx_t_5);
15561 
15562  /* "WaveTools.pyx":701
15563  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15564  * except:
15565  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName) # <<<<<<<<<<<<<<
15566  * sys.exit(1)
15567  *
15568  */
15569  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15570  __Pyx_GOTREF(__pyx_t_8);
15571  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Additional_spread_p, __pyx_v_spectName); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15572  __Pyx_GOTREF(__pyx_t_6);
15573  __pyx_t_7 = NULL;
15574  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
15575  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
15576  if (likely(__pyx_t_7)) {
15577  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15578  __Pyx_INCREF(__pyx_t_7);
15579  __Pyx_INCREF(function);
15580  __Pyx_DECREF_SET(__pyx_t_8, function);
15581  }
15582  }
15583  if (!__pyx_t_7) {
15584  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15585  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15586  __Pyx_GOTREF(__pyx_t_1);
15587  } else {
15588  __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15589  __Pyx_GOTREF(__pyx_t_15);
15590  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_7); __pyx_t_7 = NULL;
15591  __Pyx_GIVEREF(__pyx_t_6);
15592  PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
15593  __pyx_t_6 = 0;
15594  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_15, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15595  __Pyx_GOTREF(__pyx_t_1);
15596  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
15597  }
15598  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15599  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15600 
15601  /* "WaveTools.pyx":702
15602  * except:
15603  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
15604  * sys.exit(1) # <<<<<<<<<<<<<<
15605  *
15606  * # Setting amplitudes
15607  */
15608  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15609  __Pyx_GOTREF(__pyx_t_1);
15610  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15611  __Pyx_GOTREF(__pyx_t_8);
15612  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15613  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15614  __Pyx_GOTREF(__pyx_t_1);
15615  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15616  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15617  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15618  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15619  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15620  goto __pyx_L11_exception_handled;
15621  }
15622  __pyx_L12_except_error:;
15623 
15624  /* "WaveTools.pyx":698
15625  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15626  * else:
15627  * try: # <<<<<<<<<<<<<<
15628  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15629  * except:
15630  */
15631  __Pyx_XGIVEREF(__pyx_t_12);
15632  __Pyx_XGIVEREF(__pyx_t_13);
15633  __Pyx_XGIVEREF(__pyx_t_14);
15634  __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
15635  goto __pyx_L1_error;
15636  __pyx_L11_exception_handled:;
15637  __Pyx_XGIVEREF(__pyx_t_12);
15638  __Pyx_XGIVEREF(__pyx_t_13);
15639  __Pyx_XGIVEREF(__pyx_t_14);
15640  __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
15641  __pyx_L17_try_end:;
15642  }
15643  }
15644  __pyx_L9:;
15645 
15646  /* "WaveTools.pyx":706
15647  * # Setting amplitudes
15648  * #Normalising the spreading function
15649  * freq = range(0,self.N) # <<<<<<<<<<<<<<
15650  * # Normalising integral over all frequencies
15651  * for ii in freq:
15652  */
15653  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15654  __Pyx_GOTREF(__pyx_t_5);
15655  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15656  __Pyx_GOTREF(__pyx_t_3);
15657  __Pyx_INCREF(__pyx_int_0);
15658  __Pyx_GIVEREF(__pyx_int_0);
15659  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0);
15660  __Pyx_GIVEREF(__pyx_t_5);
15661  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
15662  __pyx_t_5 = 0;
15663  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15664  __Pyx_GOTREF(__pyx_t_5);
15665  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15666  __pyx_v_freq = __pyx_t_5;
15667  __pyx_t_5 = 0;
15668 
15669  /* "WaveTools.pyx":708
15670  * freq = range(0,self.N)
15671  * # Normalising integral over all frequencies
15672  * for ii in freq: # <<<<<<<<<<<<<<
15673  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
15674  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15675  */
15676  if (likely(PyList_CheckExact(__pyx_v_freq)) || PyTuple_CheckExact(__pyx_v_freq)) {
15677  __pyx_t_5 = __pyx_v_freq; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
15678  __pyx_t_9 = NULL;
15679  } else {
15680  __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_freq); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15681  __Pyx_GOTREF(__pyx_t_5);
15682  __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15683  }
15684  for (;;) {
15685  if (likely(!__pyx_t_9)) {
15686  if (likely(PyList_CheckExact(__pyx_t_5))) {
15687  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
15688  #if CYTHON_COMPILING_IN_CPYTHON
15689  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15690  #else
15691  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15692  __Pyx_GOTREF(__pyx_t_3);
15693  #endif
15694  } else {
15695  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
15696  #if CYTHON_COMPILING_IN_CPYTHON
15697  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15698  #else
15699  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15700  __Pyx_GOTREF(__pyx_t_3);
15701  #endif
15702  }
15703  } else {
15704  __pyx_t_3 = __pyx_t_9(__pyx_t_5);
15705  if (unlikely(!__pyx_t_3)) {
15706  PyObject* exc_type = PyErr_Occurred();
15707  if (exc_type) {
15708  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
15709  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15710  }
15711  break;
15712  }
15713  __Pyx_GOTREF(__pyx_t_3);
15714  }
15715  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_3);
15716  __pyx_t_3 = 0;
15717 
15718  /* "WaveTools.pyx":709
15719  * # Normalising integral over all frequencies
15720  * for ii in freq:
15721  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m) # <<<<<<<<<<<<<<
15722  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15723  * # Creating amplitudes spectrum
15724  */
15725  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normIntegral); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15726  __Pyx_GOTREF(__pyx_t_2);
15727  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15728  __Pyx_GOTREF(__pyx_t_1);
15729  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15730  __Pyx_GOTREF(__pyx_t_8);
15731  __Pyx_INCREF(__pyx_slice__74);
15732  __Pyx_GIVEREF(__pyx_slice__74);
15733  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_slice__74);
15734  __Pyx_INCREF(__pyx_v_ii);
15735  __Pyx_GIVEREF(__pyx_v_ii);
15736  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
15737  __pyx_t_15 = PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(__pyx_t_15 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15738  __Pyx_GOTREF(__pyx_t_15);
15739  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15740  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15741  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15742  __Pyx_GOTREF(__pyx_t_8);
15743  __pyx_t_1 = NULL;
15744  __pyx_t_10 = 0;
15745  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
15746  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
15747  if (likely(__pyx_t_1)) {
15748  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
15749  __Pyx_INCREF(__pyx_t_1);
15750  __Pyx_INCREF(function);
15751  __Pyx_DECREF_SET(__pyx_t_2, function);
15752  __pyx_t_10 = 1;
15753  }
15754  }
15755  __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15756  __Pyx_GOTREF(__pyx_t_6);
15757  if (__pyx_t_1) {
15758  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
15759  }
15760  __Pyx_GIVEREF(__pyx_t_15);
15761  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_t_15);
15762  __Pyx_GIVEREF(__pyx_t_8);
15763  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_t_8);
15764  __pyx_t_15 = 0;
15765  __pyx_t_8 = 0;
15766  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15767  __Pyx_GOTREF(__pyx_t_3);
15768  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15769  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15770  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15771  __Pyx_GOTREF(__pyx_t_2);
15772  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15773  __Pyx_GOTREF(__pyx_t_6);
15774  __Pyx_INCREF(__pyx_slice__75);
15775  __Pyx_GIVEREF(__pyx_slice__75);
15776  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__75);
15777  __Pyx_INCREF(__pyx_v_ii);
15778  __Pyx_GIVEREF(__pyx_v_ii);
15779  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_ii);
15780  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_6, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15781  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15782  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15783  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15784 
15785  /* "WaveTools.pyx":710
15786  * for ii in freq:
15787  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
15788  * self.Si_Sp[:,ii]*= self.Si_Jm[ii] # <<<<<<<<<<<<<<
15789  * # Creating amplitudes spectrum
15790  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
15791  */
15792  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15793  __Pyx_GOTREF(__pyx_t_3);
15794  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15795  __Pyx_GOTREF(__pyx_t_6);
15796  __Pyx_INCREF(__pyx_slice__76);
15797  __Pyx_GIVEREF(__pyx_slice__76);
15798  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__76);
15799  __Pyx_INCREF(__pyx_v_ii);
15800  __Pyx_GIVEREF(__pyx_v_ii);
15801  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_ii);
15802  __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_t_6); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15803  __Pyx_GOTREF(__pyx_t_2);
15804  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15805  __Pyx_GOTREF(__pyx_t_8);
15806  __pyx_t_15 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_15 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15807  __Pyx_GOTREF(__pyx_t_15);
15808  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15809  __pyx_t_8 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_t_15); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15810  __Pyx_GOTREF(__pyx_t_8);
15811  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15812  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
15813  if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_6, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15814  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15815  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15816  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15817 
15818  /* "WaveTools.pyx":708
15819  * freq = range(0,self.N)
15820  * # Normalising integral over all frequencies
15821  * for ii in freq: # <<<<<<<<<<<<<<
15822  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
15823  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15824  */
15825  }
15826  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15827 
15828  /* "WaveTools.pyx":712
15829  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15830  * # Creating amplitudes spectrum
15831  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim)) # <<<<<<<<<<<<<<
15832  * def eta(self, x, t):
15833  * """Free surface displacement
15834  */
15835  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15836  __Pyx_GOTREF(__pyx_t_3);
15837  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15838  __Pyx_GOTREF(__pyx_t_6);
15839  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15840  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_returnRectangles3D); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15841  __Pyx_GOTREF(__pyx_t_8);
15842  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15843  __Pyx_GOTREF(__pyx_t_15);
15844  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15845  __Pyx_GOTREF(__pyx_t_2);
15846  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15847  __Pyx_GOTREF(__pyx_t_1);
15848  __pyx_t_7 = NULL;
15849  __pyx_t_4 = 0;
15850  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
15851  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
15852  if (likely(__pyx_t_7)) {
15853  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15854  __Pyx_INCREF(__pyx_t_7);
15855  __Pyx_INCREF(function);
15856  __Pyx_DECREF_SET(__pyx_t_8, function);
15857  __pyx_t_4 = 1;
15858  }
15859  }
15860  __pyx_t_16 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15861  __Pyx_GOTREF(__pyx_t_16);
15862  if (__pyx_t_7) {
15863  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_7); __pyx_t_7 = NULL;
15864  }
15865  __Pyx_GIVEREF(__pyx_t_15);
15866  PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_4, __pyx_t_15);
15867  __Pyx_GIVEREF(__pyx_t_2);
15868  PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_4, __pyx_t_2);
15869  __Pyx_GIVEREF(__pyx_t_1);
15870  PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_4, __pyx_t_1);
15871  __pyx_t_15 = 0;
15872  __pyx_t_2 = 0;
15873  __pyx_t_1 = 0;
15874  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15875  __Pyx_GOTREF(__pyx_t_3);
15876  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
15877  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15878  __pyx_t_8 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15879  __Pyx_GOTREF(__pyx_t_8);
15880  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15881  __pyx_t_3 = NULL;
15882  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
15883  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
15884  if (likely(__pyx_t_3)) {
15885  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
15886  __Pyx_INCREF(__pyx_t_3);
15887  __Pyx_INCREF(function);
15888  __Pyx_DECREF_SET(__pyx_t_6, function);
15889  }
15890  }
15891  if (!__pyx_t_3) {
15892  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15893  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15894  __Pyx_GOTREF(__pyx_t_5);
15895  } else {
15896  __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15897  __Pyx_GOTREF(__pyx_t_16);
15898  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_3); __pyx_t_3 = NULL;
15899  __Pyx_GIVEREF(__pyx_t_8);
15900  PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_8);
15901  __pyx_t_8 = 0;
15902  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_16, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15903  __Pyx_GOTREF(__pyx_t_5);
15904  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
15905  }
15906  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15907  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15908  __Pyx_GOTREF(__pyx_t_6);
15909  if (__Pyx_PyObject_SetSlice(__pyx_t_6, __pyx_t_5, 0, 0, NULL, NULL, &__pyx_slice__77, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15910  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15911  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15912 
15913  /* "WaveTools.pyx":616
15914  *
15915  * """
15916  * def __init__(self, # <<<<<<<<<<<<<<
15917  * M, #half bin of frequencies
15918  * Tp, # np array with
15919  */
15920 
15921  /* function exit code */
15922  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15923  goto __pyx_L0;
15924  __pyx_L1_error:;
15925  __Pyx_XDECREF(__pyx_t_1);
15926  __Pyx_XDECREF(__pyx_t_2);
15927  __Pyx_XDECREF(__pyx_t_3);
15928  __Pyx_XDECREF(__pyx_t_5);
15929  __Pyx_XDECREF(__pyx_t_6);
15930  __Pyx_XDECREF(__pyx_t_7);
15931  __Pyx_XDECREF(__pyx_t_8);
15932  __Pyx_XDECREF(__pyx_t_15);
15933  __Pyx_XDECREF(__pyx_t_16);
15934  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15935  __pyx_r = NULL;
15936  __pyx_L0:;
15937  __Pyx_XDECREF(__pyx_v_validSpread);
15938  __Pyx_XDECREF(__pyx_v_spread_fun);
15939  __Pyx_XDECREF(__pyx_v_rotation3D);
15940  __Pyx_XDECREF(__pyx_v_temp_array);
15941  __Pyx_XDECREF(__pyx_v_directions);
15942  __Pyx_XDECREF(__pyx_v_rr);
15943  __Pyx_XDECREF(__pyx_v_theta);
15944  __Pyx_XDECREF(__pyx_v_i);
15945  __Pyx_XDECREF(__pyx_v_freq);
15946  __Pyx_XDECREF(__pyx_v_ii);
15947  __Pyx_XGIVEREF(__pyx_r);
15948  __Pyx_RefNannyFinishContext();
15949  return __pyx_r;
15950 }
15951 
15952 /* "WaveTools.pyx":713
15953  * # Creating amplitudes spectrum
15954  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
15955  * def eta(self, x, t): # <<<<<<<<<<<<<<
15956  * """Free surface displacement
15957  *
15958  */
15959 
15960 /* Python wrapper */
15961 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15962 static char __pyx_doc_9WaveTools_16DirectionalWaves_2eta[] = "DirectionalWaves.eta(self, x, t)\nFree surface displacement\n\n :param x: floating point x coordinate\n :param t: time";
15963 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_2eta};
15964 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
15965  PyObject *__pyx_v_self = 0;
15966  PyObject *__pyx_v_x = 0;
15967  PyObject *__pyx_v_t = 0;
15968  int __pyx_lineno = 0;
15969  const char *__pyx_filename = NULL;
15970  int __pyx_clineno = 0;
15971  PyObject *__pyx_r = 0;
15972  __Pyx_RefNannyDeclarations
15973  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
15974  {
15975  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
15976  PyObject* values[3] = {0,0,0};
15977  if (unlikely(__pyx_kwds)) {
15978  Py_ssize_t kw_args;
15979  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
15980  switch (pos_args) {
15981  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
15982  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15983  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15984  case 0: break;
15985  default: goto __pyx_L5_argtuple_error;
15986  }
15987  kw_args = PyDict_Size(__pyx_kwds);
15988  switch (pos_args) {
15989  case 0:
15990  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
15991  else goto __pyx_L5_argtuple_error;
15992  case 1:
15993  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
15994  else {
15995  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15996  }
15997  case 2:
15998  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
15999  else {
16000  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16001  }
16002  }
16003  if (unlikely(kw_args > 0)) {
16004  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16005  }
16006  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
16007  goto __pyx_L5_argtuple_error;
16008  } else {
16009  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16010  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16011  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16012  }
16013  __pyx_v_self = values[0];
16014  __pyx_v_x = values[1];
16015  __pyx_v_t = values[2];
16016  }
16017  goto __pyx_L4_argument_unpacking_done;
16018  __pyx_L5_argtuple_error:;
16019  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16020  __pyx_L3_error:;
16021  __Pyx_AddTraceback("WaveTools.DirectionalWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
16022  __Pyx_RefNannyFinishContext();
16023  return NULL;
16024  __pyx_L4_argument_unpacking_done:;
16025  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
16026 
16027  /* function exit code */
16028  __Pyx_RefNannyFinishContext();
16029  return __pyx_r;
16030 }
16031 
16032 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
16033  PyObject *__pyx_v_Eta = NULL;
16034  PyObject *__pyx_v_jj = NULL;
16035  PyObject *__pyx_v_ii = NULL;
16036  PyObject *__pyx_v_kDiri = NULL;
16037  PyObject *__pyx_r = NULL;
16038  __Pyx_RefNannyDeclarations
16039  PyObject *__pyx_t_1 = NULL;
16040  PyObject *__pyx_t_2 = NULL;
16041  Py_ssize_t __pyx_t_3;
16042  PyObject *(*__pyx_t_4)(PyObject *);
16043  PyObject *__pyx_t_5 = NULL;
16044  Py_ssize_t __pyx_t_6;
16045  PyObject *(*__pyx_t_7)(PyObject *);
16046  PyObject *__pyx_t_8 = NULL;
16047  PyObject *__pyx_t_9 = NULL;
16048  PyObject *__pyx_t_10 = NULL;
16049  PyObject *__pyx_t_11 = NULL;
16050  PyObject *__pyx_t_12 = NULL;
16051  PyObject *__pyx_t_13 = NULL;
16052  Py_ssize_t __pyx_t_14;
16053  int __pyx_lineno = 0;
16054  const char *__pyx_filename = NULL;
16055  int __pyx_clineno = 0;
16056  __Pyx_RefNannySetupContext("eta", 0);
16057 
16058  /* "WaveTools.pyx":718
16059  * :param x: floating point x coordinate
16060  * :param t: time"""
16061  * Eta=0. # <<<<<<<<<<<<<<
16062  * for jj in range(self.Mtot):
16063  * for ii in range(self.N):
16064  */
16065  __Pyx_INCREF(__pyx_float_0_);
16066  __pyx_v_Eta = __pyx_float_0_;
16067 
16068  /* "WaveTools.pyx":719
16069  * :param t: time"""
16070  * Eta=0.
16071  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16072  * for ii in range(self.N):
16073  * kDiri = self.waveDirs[jj]*self.ki[ii]
16074  */
16075  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16076  __Pyx_GOTREF(__pyx_t_1);
16077  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16078  __Pyx_GOTREF(__pyx_t_2);
16079  __Pyx_GIVEREF(__pyx_t_1);
16080  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
16081  __pyx_t_1 = 0;
16082  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16083  __Pyx_GOTREF(__pyx_t_1);
16084  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16085  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16086  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
16087  __pyx_t_4 = NULL;
16088  } else {
16089  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16090  __Pyx_GOTREF(__pyx_t_2);
16091  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16092  }
16093  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16094  for (;;) {
16095  if (likely(!__pyx_t_4)) {
16096  if (likely(PyList_CheckExact(__pyx_t_2))) {
16097  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
16098  #if CYTHON_COMPILING_IN_CPYTHON
16099  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16100  #else
16101  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16102  __Pyx_GOTREF(__pyx_t_1);
16103  #endif
16104  } else {
16105  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
16106  #if CYTHON_COMPILING_IN_CPYTHON
16107  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16108  #else
16109  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16110  __Pyx_GOTREF(__pyx_t_1);
16111  #endif
16112  }
16113  } else {
16114  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
16115  if (unlikely(!__pyx_t_1)) {
16116  PyObject* exc_type = PyErr_Occurred();
16117  if (exc_type) {
16118  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16119  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16120  }
16121  break;
16122  }
16123  __Pyx_GOTREF(__pyx_t_1);
16124  }
16125  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
16126  __pyx_t_1 = 0;
16127 
16128  /* "WaveTools.pyx":720
16129  * Eta=0.
16130  * for jj in range(self.Mtot):
16131  * for ii in range(self.N): # <<<<<<<<<<<<<<
16132  * kDiri = self.waveDirs[jj]*self.ki[ii]
16133  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16134  */
16135  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16136  __Pyx_GOTREF(__pyx_t_1);
16137  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16138  __Pyx_GOTREF(__pyx_t_5);
16139  __Pyx_GIVEREF(__pyx_t_1);
16140  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
16141  __pyx_t_1 = 0;
16142  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16143  __Pyx_GOTREF(__pyx_t_1);
16144  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16145  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16146  __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
16147  __pyx_t_7 = NULL;
16148  } else {
16149  __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16150  __Pyx_GOTREF(__pyx_t_5);
16151  __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16152  }
16153  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16154  for (;;) {
16155  if (likely(!__pyx_t_7)) {
16156  if (likely(PyList_CheckExact(__pyx_t_5))) {
16157  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
16158  #if CYTHON_COMPILING_IN_CPYTHON
16159  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16160  #else
16161  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16162  __Pyx_GOTREF(__pyx_t_1);
16163  #endif
16164  } else {
16165  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
16166  #if CYTHON_COMPILING_IN_CPYTHON
16167  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16168  #else
16169  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16170  __Pyx_GOTREF(__pyx_t_1);
16171  #endif
16172  }
16173  } else {
16174  __pyx_t_1 = __pyx_t_7(__pyx_t_5);
16175  if (unlikely(!__pyx_t_1)) {
16176  PyObject* exc_type = PyErr_Occurred();
16177  if (exc_type) {
16178  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16179  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16180  }
16181  break;
16182  }
16183  __Pyx_GOTREF(__pyx_t_1);
16184  }
16185  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
16186  __pyx_t_1 = 0;
16187 
16188  /* "WaveTools.pyx":721
16189  * for jj in range(self.Mtot):
16190  * for ii in range(self.N):
16191  * kDiri = self.waveDirs[jj]*self.ki[ii] # <<<<<<<<<<<<<<
16192  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16193  * return Eta
16194  */
16195  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16196  __Pyx_GOTREF(__pyx_t_1);
16197  __pyx_t_8 = PyObject_GetItem(__pyx_t_1, __pyx_v_jj); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16198  __Pyx_GOTREF(__pyx_t_8);
16199  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16200  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16201  __Pyx_GOTREF(__pyx_t_1);
16202  __pyx_t_9 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16203  __Pyx_GOTREF(__pyx_t_9);
16204  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16205  __pyx_t_1 = PyNumber_Multiply(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16206  __Pyx_GOTREF(__pyx_t_1);
16207  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16208  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16209  __Pyx_XDECREF_SET(__pyx_v_kDiri, __pyx_t_1);
16210  __pyx_t_1 = 0;
16211 
16212  /* "WaveTools.pyx":722
16213  * for ii in range(self.N):
16214  * kDiri = self.waveDirs[jj]*self.ki[ii]
16215  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii]) # <<<<<<<<<<<<<<
16216  * return Eta
16217  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16218  */
16219  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16220  __Pyx_GOTREF(__pyx_t_9);
16221  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16222  __Pyx_GOTREF(__pyx_t_8);
16223  __pyx_t_10 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16224  __Pyx_GOTREF(__pyx_t_10);
16225  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16226  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16227  __Pyx_GOTREF(__pyx_t_8);
16228  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16229  __Pyx_GOTREF(__pyx_t_11);
16230  __Pyx_INCREF(__pyx_v_jj);
16231  __Pyx_GIVEREF(__pyx_v_jj);
16232  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_jj);
16233  __Pyx_INCREF(__pyx_v_ii);
16234  __Pyx_GIVEREF(__pyx_v_ii);
16235  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_ii);
16236  __pyx_t_12 = PyObject_GetItem(__pyx_t_8, __pyx_t_11); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16237  __Pyx_GOTREF(__pyx_t_12);
16238  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16239  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
16240  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16241  __Pyx_GOTREF(__pyx_t_11);
16242  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16243  __Pyx_GOTREF(__pyx_t_8);
16244  __Pyx_INCREF(__pyx_v_jj);
16245  __Pyx_GIVEREF(__pyx_v_jj);
16246  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_jj);
16247  __Pyx_INCREF(__pyx_v_ii);
16248  __Pyx_GIVEREF(__pyx_v_ii);
16249  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
16250  __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_t_8); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16251  __Pyx_GOTREF(__pyx_t_13);
16252  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
16253  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16254  __pyx_t_8 = NULL;
16255  __pyx_t_14 = 0;
16256  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
16257  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
16258  if (likely(__pyx_t_8)) {
16259  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
16260  __Pyx_INCREF(__pyx_t_8);
16261  __Pyx_INCREF(function);
16262  __Pyx_DECREF_SET(__pyx_t_9, function);
16263  __pyx_t_14 = 1;
16264  }
16265  }
16266  __pyx_t_11 = PyTuple_New(6+__pyx_t_14); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16267  __Pyx_GOTREF(__pyx_t_11);
16268  if (__pyx_t_8) {
16269  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
16270  }
16271  __Pyx_INCREF(__pyx_v_x);
16272  __Pyx_GIVEREF(__pyx_v_x);
16273  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_14, __pyx_v_x);
16274  __Pyx_INCREF(__pyx_v_t);
16275  __Pyx_GIVEREF(__pyx_v_t);
16276  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_14, __pyx_v_t);
16277  __Pyx_INCREF(__pyx_v_kDiri);
16278  __Pyx_GIVEREF(__pyx_v_kDiri);
16279  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_14, __pyx_v_kDiri);
16280  __Pyx_GIVEREF(__pyx_t_10);
16281  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_14, __pyx_t_10);
16282  __Pyx_GIVEREF(__pyx_t_12);
16283  PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_14, __pyx_t_12);
16284  __Pyx_GIVEREF(__pyx_t_13);
16285  PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_14, __pyx_t_13);
16286  __pyx_t_10 = 0;
16287  __pyx_t_12 = 0;
16288  __pyx_t_13 = 0;
16289  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16290  __Pyx_GOTREF(__pyx_t_1);
16291  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
16292  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16293  __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16294  __Pyx_GOTREF(__pyx_t_9);
16295  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16296  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_9);
16297  __pyx_t_9 = 0;
16298 
16299  /* "WaveTools.pyx":720
16300  * Eta=0.
16301  * for jj in range(self.Mtot):
16302  * for ii in range(self.N): # <<<<<<<<<<<<<<
16303  * kDiri = self.waveDirs[jj]*self.ki[ii]
16304  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16305  */
16306  }
16307  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16308 
16309  /* "WaveTools.pyx":719
16310  * :param t: time"""
16311  * Eta=0.
16312  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16313  * for ii in range(self.N):
16314  * kDiri = self.waveDirs[jj]*self.ki[ii]
16315  */
16316  }
16317  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16318 
16319  /* "WaveTools.pyx":723
16320  * kDiri = self.waveDirs[jj]*self.ki[ii]
16321  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16322  * return Eta # <<<<<<<<<<<<<<
16323  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16324  *
16325  */
16326  __Pyx_XDECREF(__pyx_r);
16327  __Pyx_INCREF(__pyx_v_Eta);
16328  __pyx_r = __pyx_v_Eta;
16329  goto __pyx_L0;
16330 
16331  /* "WaveTools.pyx":713
16332  * # Creating amplitudes spectrum
16333  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
16334  * def eta(self, x, t): # <<<<<<<<<<<<<<
16335  * """Free surface displacement
16336  *
16337  */
16338 
16339  /* function exit code */
16340  __pyx_L1_error:;
16341  __Pyx_XDECREF(__pyx_t_1);
16342  __Pyx_XDECREF(__pyx_t_2);
16343  __Pyx_XDECREF(__pyx_t_5);
16344  __Pyx_XDECREF(__pyx_t_8);
16345  __Pyx_XDECREF(__pyx_t_9);
16346  __Pyx_XDECREF(__pyx_t_10);
16347  __Pyx_XDECREF(__pyx_t_11);
16348  __Pyx_XDECREF(__pyx_t_12);
16349  __Pyx_XDECREF(__pyx_t_13);
16350  __Pyx_AddTraceback("WaveTools.DirectionalWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
16351  __pyx_r = NULL;
16352  __pyx_L0:;
16353  __Pyx_XDECREF(__pyx_v_Eta);
16354  __Pyx_XDECREF(__pyx_v_jj);
16355  __Pyx_XDECREF(__pyx_v_ii);
16356  __Pyx_XDECREF(__pyx_v_kDiri);
16357  __Pyx_XGIVEREF(__pyx_r);
16358  __Pyx_RefNannyFinishContext();
16359  return __pyx_r;
16360 }
16361 
16362 /* "WaveTools.pyx":726
16363  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16364  *
16365  * def u(self, x, t): # <<<<<<<<<<<<<<
16366  * """x-component of velocity
16367  *
16368  */
16369 
16370 /* Python wrapper */
16371 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16372 static char __pyx_doc_9WaveTools_16DirectionalWaves_4u[] = "DirectionalWaves.u(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
16373 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_4u};
16374 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16375  PyObject *__pyx_v_self = 0;
16376  PyObject *__pyx_v_x = 0;
16377  PyObject *__pyx_v_t = 0;
16378  int __pyx_lineno = 0;
16379  const char *__pyx_filename = NULL;
16380  int __pyx_clineno = 0;
16381  PyObject *__pyx_r = 0;
16382  __Pyx_RefNannyDeclarations
16383  __Pyx_RefNannySetupContext("u (wrapper)", 0);
16384  {
16385  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
16386  PyObject* values[3] = {0,0,0};
16387  if (unlikely(__pyx_kwds)) {
16388  Py_ssize_t kw_args;
16389  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16390  switch (pos_args) {
16391  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16392  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16393  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16394  case 0: break;
16395  default: goto __pyx_L5_argtuple_error;
16396  }
16397  kw_args = PyDict_Size(__pyx_kwds);
16398  switch (pos_args) {
16399  case 0:
16400  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
16401  else goto __pyx_L5_argtuple_error;
16402  case 1:
16403  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
16404  else {
16405  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16406  }
16407  case 2:
16408  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
16409  else {
16410  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16411  }
16412  }
16413  if (unlikely(kw_args > 0)) {
16414  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16415  }
16416  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
16417  goto __pyx_L5_argtuple_error;
16418  } else {
16419  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16420  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16421  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16422  }
16423  __pyx_v_self = values[0];
16424  __pyx_v_x = values[1];
16425  __pyx_v_t = values[2];
16426  }
16427  goto __pyx_L4_argument_unpacking_done;
16428  __pyx_L5_argtuple_error:;
16429  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16430  __pyx_L3_error:;
16431  __Pyx_AddTraceback("WaveTools.DirectionalWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
16432  __Pyx_RefNannyFinishContext();
16433  return NULL;
16434  __pyx_L4_argument_unpacking_done:;
16435  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
16436 
16437  /* function exit code */
16438  __Pyx_RefNannyFinishContext();
16439  return __pyx_r;
16440 }
16441 
16442 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
16443  PyObject *__pyx_v_U = NULL;
16444  PyObject *__pyx_v_jj = NULL;
16445  PyObject *__pyx_v_ii = NULL;
16446  PyObject *__pyx_v_kDiri = NULL;
16447  PyObject *__pyx_r = NULL;
16448  __Pyx_RefNannyDeclarations
16449  PyObject *__pyx_t_1 = NULL;
16450  PyObject *__pyx_t_2 = NULL;
16451  Py_ssize_t __pyx_t_3;
16452  PyObject *(*__pyx_t_4)(PyObject *);
16453  PyObject *__pyx_t_5 = NULL;
16454  Py_ssize_t __pyx_t_6;
16455  PyObject *(*__pyx_t_7)(PyObject *);
16456  PyObject *__pyx_t_8 = NULL;
16457  PyObject *__pyx_t_9 = NULL;
16458  PyObject *__pyx_t_10 = NULL;
16459  PyObject *__pyx_t_11 = NULL;
16460  PyObject *__pyx_t_12 = NULL;
16461  PyObject *__pyx_t_13 = NULL;
16462  PyObject *__pyx_t_14 = NULL;
16463  PyObject *__pyx_t_15 = NULL;
16464  PyObject *__pyx_t_16 = NULL;
16465  PyObject *__pyx_t_17 = NULL;
16466  Py_ssize_t __pyx_t_18;
16467  PyObject *__pyx_t_19 = NULL;
16468  int __pyx_lineno = 0;
16469  const char *__pyx_filename = NULL;
16470  int __pyx_clineno = 0;
16471  __Pyx_RefNannySetupContext("u", 0);
16472 
16473  /* "WaveTools.pyx":733
16474  * :param t: time
16475  * """
16476  * U=0. # <<<<<<<<<<<<<<
16477  * for jj in range(self.Mtot):
16478  * for ii in range(self.N):
16479  */
16480  __Pyx_INCREF(__pyx_float_0_);
16481  __pyx_v_U = __pyx_float_0_;
16482 
16483  /* "WaveTools.pyx":734
16484  * """
16485  * U=0.
16486  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16487  * for ii in range(self.N):
16488  * kDiri = self.waveDirs[jj]*self.ki[ii]
16489  */
16490  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16491  __Pyx_GOTREF(__pyx_t_1);
16492  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16493  __Pyx_GOTREF(__pyx_t_2);
16494  __Pyx_GIVEREF(__pyx_t_1);
16495  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
16496  __pyx_t_1 = 0;
16497  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16498  __Pyx_GOTREF(__pyx_t_1);
16499  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16500  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16501  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
16502  __pyx_t_4 = NULL;
16503  } else {
16504  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16505  __Pyx_GOTREF(__pyx_t_2);
16506  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16507  }
16508  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16509  for (;;) {
16510  if (likely(!__pyx_t_4)) {
16511  if (likely(PyList_CheckExact(__pyx_t_2))) {
16512  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
16513  #if CYTHON_COMPILING_IN_CPYTHON
16514  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16515  #else
16516  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16517  __Pyx_GOTREF(__pyx_t_1);
16518  #endif
16519  } else {
16520  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
16521  #if CYTHON_COMPILING_IN_CPYTHON
16522  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16523  #else
16524  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16525  __Pyx_GOTREF(__pyx_t_1);
16526  #endif
16527  }
16528  } else {
16529  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
16530  if (unlikely(!__pyx_t_1)) {
16531  PyObject* exc_type = PyErr_Occurred();
16532  if (exc_type) {
16533  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16534  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16535  }
16536  break;
16537  }
16538  __Pyx_GOTREF(__pyx_t_1);
16539  }
16540  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
16541  __pyx_t_1 = 0;
16542 
16543  /* "WaveTools.pyx":735
16544  * U=0.
16545  * for jj in range(self.Mtot):
16546  * for ii in range(self.N): # <<<<<<<<<<<<<<
16547  * kDiri = self.waveDirs[jj]*self.ki[ii]
16548  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16549  */
16550  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16551  __Pyx_GOTREF(__pyx_t_1);
16552  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16553  __Pyx_GOTREF(__pyx_t_5);
16554  __Pyx_GIVEREF(__pyx_t_1);
16555  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
16556  __pyx_t_1 = 0;
16557  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16558  __Pyx_GOTREF(__pyx_t_1);
16559  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16560  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16561  __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
16562  __pyx_t_7 = NULL;
16563  } else {
16564  __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16565  __Pyx_GOTREF(__pyx_t_5);
16566  __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16567  }
16568  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16569  for (;;) {
16570  if (likely(!__pyx_t_7)) {
16571  if (likely(PyList_CheckExact(__pyx_t_5))) {
16572  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
16573  #if CYTHON_COMPILING_IN_CPYTHON
16574  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16575  #else
16576  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16577  __Pyx_GOTREF(__pyx_t_1);
16578  #endif
16579  } else {
16580  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
16581  #if CYTHON_COMPILING_IN_CPYTHON
16582  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16583  #else
16584  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16585  __Pyx_GOTREF(__pyx_t_1);
16586  #endif
16587  }
16588  } else {
16589  __pyx_t_1 = __pyx_t_7(__pyx_t_5);
16590  if (unlikely(!__pyx_t_1)) {
16591  PyObject* exc_type = PyErr_Occurred();
16592  if (exc_type) {
16593  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16594  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16595  }
16596  break;
16597  }
16598  __Pyx_GOTREF(__pyx_t_1);
16599  }
16600  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
16601  __pyx_t_1 = 0;
16602 
16603  /* "WaveTools.pyx":736
16604  * for jj in range(self.Mtot):
16605  * for ii in range(self.N):
16606  * kDiri = self.waveDirs[jj]*self.ki[ii] # <<<<<<<<<<<<<<
16607  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16608  * return U
16609  */
16610  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16611  __Pyx_GOTREF(__pyx_t_1);
16612  __pyx_t_8 = PyObject_GetItem(__pyx_t_1, __pyx_v_jj); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16613  __Pyx_GOTREF(__pyx_t_8);
16614  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16615  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16616  __Pyx_GOTREF(__pyx_t_1);
16617  __pyx_t_9 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16618  __Pyx_GOTREF(__pyx_t_9);
16619  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16620  __pyx_t_1 = PyNumber_Multiply(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16621  __Pyx_GOTREF(__pyx_t_1);
16622  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16623  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16624  __Pyx_XDECREF_SET(__pyx_v_kDiri, __pyx_t_1);
16625  __pyx_t_1 = 0;
16626 
16627  /* "WaveTools.pyx":737
16628  * for ii in range(self.N):
16629  * kDiri = self.waveDirs[jj]*self.ki[ii]
16630  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
16631  * return U
16632  *
16633  */
16634  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16635  __Pyx_GOTREF(__pyx_t_9);
16636  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16637  __Pyx_GOTREF(__pyx_t_8);
16638  __pyx_t_10 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16639  __Pyx_GOTREF(__pyx_t_10);
16640  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16641  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16642  __Pyx_GOTREF(__pyx_t_8);
16643  __pyx_t_11 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16644  __Pyx_GOTREF(__pyx_t_11);
16645  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16646  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16647  __Pyx_GOTREF(__pyx_t_8);
16648  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16649  __Pyx_GOTREF(__pyx_t_12);
16650  __Pyx_INCREF(__pyx_v_jj);
16651  __Pyx_GIVEREF(__pyx_v_jj);
16652  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_jj);
16653  __Pyx_INCREF(__pyx_v_ii);
16654  __Pyx_GIVEREF(__pyx_v_ii);
16655  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_ii);
16656  __pyx_t_13 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16657  __Pyx_GOTREF(__pyx_t_13);
16658  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16659  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
16660  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16661  __Pyx_GOTREF(__pyx_t_12);
16662  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16663  __Pyx_GOTREF(__pyx_t_8);
16664  __Pyx_INCREF(__pyx_v_jj);
16665  __Pyx_GIVEREF(__pyx_v_jj);
16666  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_jj);
16667  __Pyx_INCREF(__pyx_v_ii);
16668  __Pyx_GIVEREF(__pyx_v_ii);
16669  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
16670  __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_8); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16671  __Pyx_GOTREF(__pyx_t_14);
16672  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
16673  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16674  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16675  __Pyx_GOTREF(__pyx_t_8);
16676  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16677  __Pyx_GOTREF(__pyx_t_12);
16678  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16679  __Pyx_GOTREF(__pyx_t_15);
16680  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16681  __Pyx_GOTREF(__pyx_t_16);
16682  __pyx_t_17 = NULL;
16683  __pyx_t_18 = 0;
16684  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
16685  __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_9);
16686  if (likely(__pyx_t_17)) {
16687  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
16688  __Pyx_INCREF(__pyx_t_17);
16689  __Pyx_INCREF(function);
16690  __Pyx_DECREF_SET(__pyx_t_9, function);
16691  __pyx_t_18 = 1;
16692  }
16693  }
16694  __pyx_t_19 = PyTuple_New(11+__pyx_t_18); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16695  __Pyx_GOTREF(__pyx_t_19);
16696  if (__pyx_t_17) {
16697  __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_17); __pyx_t_17 = NULL;
16698  }
16699  __Pyx_INCREF(__pyx_v_x);
16700  __Pyx_GIVEREF(__pyx_v_x);
16701  PyTuple_SET_ITEM(__pyx_t_19, 0+__pyx_t_18, __pyx_v_x);
16702  __Pyx_INCREF(__pyx_v_t);
16703  __Pyx_GIVEREF(__pyx_v_t);
16704  PyTuple_SET_ITEM(__pyx_t_19, 1+__pyx_t_18, __pyx_v_t);
16705  __Pyx_INCREF(__pyx_v_kDiri);
16706  __Pyx_GIVEREF(__pyx_v_kDiri);
16707  PyTuple_SET_ITEM(__pyx_t_19, 2+__pyx_t_18, __pyx_v_kDiri);
16708  __Pyx_GIVEREF(__pyx_t_10);
16709  PyTuple_SET_ITEM(__pyx_t_19, 3+__pyx_t_18, __pyx_t_10);
16710  __Pyx_GIVEREF(__pyx_t_11);
16711  PyTuple_SET_ITEM(__pyx_t_19, 4+__pyx_t_18, __pyx_t_11);
16712  __Pyx_GIVEREF(__pyx_t_13);
16713  PyTuple_SET_ITEM(__pyx_t_19, 5+__pyx_t_18, __pyx_t_13);
16714  __Pyx_GIVEREF(__pyx_t_14);
16715  PyTuple_SET_ITEM(__pyx_t_19, 6+__pyx_t_18, __pyx_t_14);
16716  __Pyx_GIVEREF(__pyx_t_8);
16717  PyTuple_SET_ITEM(__pyx_t_19, 7+__pyx_t_18, __pyx_t_8);
16718  __Pyx_GIVEREF(__pyx_t_12);
16719  PyTuple_SET_ITEM(__pyx_t_19, 8+__pyx_t_18, __pyx_t_12);
16720  __Pyx_GIVEREF(__pyx_t_15);
16721  PyTuple_SET_ITEM(__pyx_t_19, 9+__pyx_t_18, __pyx_t_15);
16722  __Pyx_GIVEREF(__pyx_t_16);
16723  PyTuple_SET_ITEM(__pyx_t_19, 10+__pyx_t_18, __pyx_t_16);
16724  __pyx_t_10 = 0;
16725  __pyx_t_11 = 0;
16726  __pyx_t_13 = 0;
16727  __pyx_t_14 = 0;
16728  __pyx_t_8 = 0;
16729  __pyx_t_12 = 0;
16730  __pyx_t_15 = 0;
16731  __pyx_t_16 = 0;
16732  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_19, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16733  __Pyx_GOTREF(__pyx_t_1);
16734  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
16735  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16736  __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16737  __Pyx_GOTREF(__pyx_t_9);
16738  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16739  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_9);
16740  __pyx_t_9 = 0;
16741 
16742  /* "WaveTools.pyx":735
16743  * U=0.
16744  * for jj in range(self.Mtot):
16745  * for ii in range(self.N): # <<<<<<<<<<<<<<
16746  * kDiri = self.waveDirs[jj]*self.ki[ii]
16747  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16748  */
16749  }
16750  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16751 
16752  /* "WaveTools.pyx":734
16753  * """
16754  * U=0.
16755  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16756  * for ii in range(self.N):
16757  * kDiri = self.waveDirs[jj]*self.ki[ii]
16758  */
16759  }
16760  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16761 
16762  /* "WaveTools.pyx":738
16763  * kDiri = self.waveDirs[jj]*self.ki[ii]
16764  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16765  * return U # <<<<<<<<<<<<<<
16766  *
16767  *
16768  */
16769  __Pyx_XDECREF(__pyx_r);
16770  __Pyx_INCREF(__pyx_v_U);
16771  __pyx_r = __pyx_v_U;
16772  goto __pyx_L0;
16773 
16774  /* "WaveTools.pyx":726
16775  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16776  *
16777  * def u(self, x, t): # <<<<<<<<<<<<<<
16778  * """x-component of velocity
16779  *
16780  */
16781 
16782  /* function exit code */
16783  __pyx_L1_error:;
16784  __Pyx_XDECREF(__pyx_t_1);
16785  __Pyx_XDECREF(__pyx_t_2);
16786  __Pyx_XDECREF(__pyx_t_5);
16787  __Pyx_XDECREF(__pyx_t_8);
16788  __Pyx_XDECREF(__pyx_t_9);
16789  __Pyx_XDECREF(__pyx_t_10);
16790  __Pyx_XDECREF(__pyx_t_11);
16791  __Pyx_XDECREF(__pyx_t_12);
16792  __Pyx_XDECREF(__pyx_t_13);
16793  __Pyx_XDECREF(__pyx_t_14);
16794  __Pyx_XDECREF(__pyx_t_15);
16795  __Pyx_XDECREF(__pyx_t_16);
16796  __Pyx_XDECREF(__pyx_t_17);
16797  __Pyx_XDECREF(__pyx_t_19);
16798  __Pyx_AddTraceback("WaveTools.DirectionalWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
16799  __pyx_r = NULL;
16800  __pyx_L0:;
16801  __Pyx_XDECREF(__pyx_v_U);
16802  __Pyx_XDECREF(__pyx_v_jj);
16803  __Pyx_XDECREF(__pyx_v_ii);
16804  __Pyx_XDECREF(__pyx_v_kDiri);
16805  __Pyx_XGIVEREF(__pyx_r);
16806  __Pyx_RefNannyFinishContext();
16807  return __pyx_r;
16808 }
16809 
16810 /* "WaveTools.pyx":763
16811  * """
16812  *
16813  * def __init__(self, # <<<<<<<<<<<<<<
16814  * timeSeriesFile, # e.g.= "Timeseries.txt",
16815  * skiprows,
16816  */
16817 
16818 /* Python wrapper */
16819 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16820 static char __pyx_doc_9WaveTools_10TimeSeries___init__[] = "TimeSeries.__init__(self, timeSeriesFile, skiprows, timeSeriesPosition, depth, N, mwl, waveDir, g, cutoffTotal=0.01, rec_direct=True, window_params=None)";
16821 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries___init__};
16822 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16823  PyObject *__pyx_v_self = 0;
16824  PyObject *__pyx_v_timeSeriesFile = 0;
16825  PyObject *__pyx_v_skiprows = 0;
16826  PyObject *__pyx_v_timeSeriesPosition = 0;
16827  PyObject *__pyx_v_depth = 0;
16828  PyObject *__pyx_v_N = 0;
16829  PyObject *__pyx_v_mwl = 0;
16830  PyObject *__pyx_v_waveDir = 0;
16831  PyObject *__pyx_v_g = 0;
16832  PyObject *__pyx_v_cutoffTotal = 0;
16833  PyObject *__pyx_v_rec_direct = 0;
16834  PyObject *__pyx_v_window_params = 0;
16835  int __pyx_lineno = 0;
16836  const char *__pyx_filename = NULL;
16837  int __pyx_clineno = 0;
16838  PyObject *__pyx_r = 0;
16839  __Pyx_RefNannyDeclarations
16840  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
16841  {
16842  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_timeSeriesFile,&__pyx_n_s_skiprows,&__pyx_n_s_timeSeriesPosition,&__pyx_n_s_depth,&__pyx_n_s_N,&__pyx_n_s_mwl,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_cutoffTotal,&__pyx_n_s_rec_direct,&__pyx_n_s_window_params,0};
16843  PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
16844  values[9] = ((PyObject *)((PyObject*)__pyx_float_0_01));
16845 
16846  /* "WaveTools.pyx":773
16847  * g,
16848  * cutoffTotal = 0.01,
16849  * rec_direct = True, # <<<<<<<<<<<<<<
16850  * window_params = None #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff}
16851  * ):
16852  */
16853  values[10] = ((PyObject *)((PyObject *)Py_True));
16854 
16855  /* "WaveTools.pyx":774
16856  * cutoffTotal = 0.01,
16857  * rec_direct = True,
16858  * window_params = None #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff} # <<<<<<<<<<<<<<
16859  * ):
16860  *
16861  */
16862  values[11] = ((PyObject *)((PyObject *)Py_None));
16863  if (unlikely(__pyx_kwds)) {
16864  Py_ssize_t kw_args;
16865  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16866  switch (pos_args) {
16867  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
16868  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
16869  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
16870  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
16871  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
16872  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
16873  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
16874  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
16875  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
16876  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16877  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16878  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16879  case 0: break;
16880  default: goto __pyx_L5_argtuple_error;
16881  }
16882  kw_args = PyDict_Size(__pyx_kwds);
16883  switch (pos_args) {
16884  case 0:
16885  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
16886  else goto __pyx_L5_argtuple_error;
16887  case 1:
16888  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeSeriesFile)) != 0)) kw_args--;
16889  else {
16890  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16891  }
16892  case 2:
16893  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_skiprows)) != 0)) kw_args--;
16894  else {
16895  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16896  }
16897  case 3:
16898  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeSeriesPosition)) != 0)) kw_args--;
16899  else {
16900  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16901  }
16902  case 4:
16903  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
16904  else {
16905  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16906  }
16907  case 5:
16908  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
16909  else {
16910  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16911  }
16912  case 6:
16913  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
16914  else {
16915  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16916  }
16917  case 7:
16918  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
16919  else {
16920  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16921  }
16922  case 8:
16923  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
16924  else {
16925  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16926  }
16927  case 9:
16928  if (kw_args > 0) {
16929  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cutoffTotal);
16930  if (value) { values[9] = value; kw_args--; }
16931  }
16932  case 10:
16933  if (kw_args > 0) {
16934  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rec_direct);
16935  if (value) { values[10] = value; kw_args--; }
16936  }
16937  case 11:
16938  if (kw_args > 0) {
16939  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_window_params);
16940  if (value) { values[11] = value; kw_args--; }
16941  }
16942  }
16943  if (unlikely(kw_args > 0)) {
16944  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16945  }
16946  } else {
16947  switch (PyTuple_GET_SIZE(__pyx_args)) {
16948  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
16949  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
16950  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
16951  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
16952  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
16953  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
16954  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
16955  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
16956  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
16957  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16958  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16959  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16960  break;
16961  default: goto __pyx_L5_argtuple_error;
16962  }
16963  }
16964  __pyx_v_self = values[0];
16965  __pyx_v_timeSeriesFile = values[1];
16966  __pyx_v_skiprows = values[2];
16967  __pyx_v_timeSeriesPosition = values[3];
16968  __pyx_v_depth = values[4];
16969  __pyx_v_N = values[5];
16970  __pyx_v_mwl = values[6];
16971  __pyx_v_waveDir = values[7];
16972  __pyx_v_g = values[8];
16973  __pyx_v_cutoffTotal = values[9];
16974  __pyx_v_rec_direct = values[10];
16975  __pyx_v_window_params = values[11];
16976  }
16977  goto __pyx_L4_argument_unpacking_done;
16978  __pyx_L5_argtuple_error:;
16979  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16980  __pyx_L3_error:;
16981  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16982  __Pyx_RefNannyFinishContext();
16983  return NULL;
16984  __pyx_L4_argument_unpacking_done:;
16985  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries___init__(__pyx_self, __pyx_v_self, __pyx_v_timeSeriesFile, __pyx_v_skiprows, __pyx_v_timeSeriesPosition, __pyx_v_depth, __pyx_v_N, __pyx_v_mwl, __pyx_v_waveDir, __pyx_v_g, __pyx_v_cutoffTotal, __pyx_v_rec_direct, __pyx_v_window_params);
16986 
16987  /* "WaveTools.pyx":763
16988  * """
16989  *
16990  * def __init__(self, # <<<<<<<<<<<<<<
16991  * timeSeriesFile, # e.g.= "Timeseries.txt",
16992  * skiprows,
16993  */
16994 
16995  /* function exit code */
16996  __Pyx_RefNannyFinishContext();
16997  return __pyx_r;
16998 }
16999 
17000 static PyObject *__pyx_pf_9WaveTools_10TimeSeries___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeSeriesFile, PyObject *__pyx_v_skiprows, PyObject *__pyx_v_timeSeriesPosition, PyObject *__pyx_v_depth, PyObject *__pyx_v_N, PyObject *__pyx_v_mwl, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_cutoffTotal, PyObject *__pyx_v_rec_direct, PyObject *__pyx_v_window_params) {
17001  PyObject *__pyx_v_filetype = NULL;
17002  PyObject *__pyx_v_fid = NULL;
17003  PyObject *__pyx_v_tdata = NULL;
17004  Py_ssize_t __pyx_v_ncols;
17005  PyObject *__pyx_v_time_temp = NULL;
17006  int __pyx_v_doInterp;
17007  PyObject *__pyx_v_i = NULL;
17008  PyObject *__pyx_v_dt_temp = NULL;
17009  PyObject *__pyx_v_Nf = NULL;
17010  PyObject *__pyx_v_ipeak = NULL;
17011  PyObject *__pyx_v_imax = NULL;
17012  PyObject *__pyx_v_imin = NULL;
17013  Py_ssize_t __pyx_v_ii;
17014  PyObject *__pyx_v_validWindows = NULL;
17015  PyObject *__pyx_v_wind_filt = NULL;
17016  PyObject *__pyx_v_diff = NULL;
17017  PyObject *__pyx_v_jj = NULL;
17018  PyObject *__pyx_v_span = NULL;
17019  PyObject *__pyx_v_tfirst = NULL;
17020  PyObject *__pyx_v_tlast = NULL;
17021  PyObject *__pyx_v_ispan1 = NULL;
17022  PyObject *__pyx_v_ispan2 = NULL;
17023  PyObject *__pyx_v_tstart = NULL;
17024  PyObject *__pyx_v_wind = NULL;
17025  PyObject *__pyx_v_decomp = NULL;
17026  PyObject *__pyx_v_Nftemp = NULL;
17027  PyObject *__pyx_v_ki = NULL;
17028  PyObject *__pyx_v_kDir = NULL;
17029  PyObject *__pyx_r = NULL;
17030  __Pyx_RefNannyDeclarations
17031  Py_ssize_t __pyx_t_1;
17032  int __pyx_t_2;
17033  PyObject *__pyx_t_3 = NULL;
17034  PyObject *__pyx_t_4 = NULL;
17035  PyObject *__pyx_t_5 = NULL;
17036  PyObject *__pyx_t_6 = NULL;
17037  PyObject *__pyx_t_7 = NULL;
17038  PyObject *__pyx_t_8 = NULL;
17039  int __pyx_t_9;
17040  PyObject *(*__pyx_t_10)(PyObject *);
17041  PyObject *__pyx_t_11 = NULL;
17042  long __pyx_t_12;
17043  Py_ssize_t __pyx_t_13;
17044  PyObject *__pyx_t_14 = NULL;
17045  PyObject *__pyx_t_15 = NULL;
17046  PyObject *__pyx_t_16 = NULL;
17047  int __pyx_t_17;
17048  PyObject *__pyx_t_18 = NULL;
17049  PyObject *__pyx_t_19 = NULL;
17050  Py_ssize_t __pyx_t_20;
17051  int __pyx_lineno = 0;
17052  const char *__pyx_filename = NULL;
17053  int __pyx_clineno = 0;
17054  __Pyx_RefNannySetupContext("__init__", 0);
17055 
17056  /* "WaveTools.pyx":778
17057  *
17058  * # Setting the depth
17059  * self.depth = depth # <<<<<<<<<<<<<<
17060  * self.rec_direct = rec_direct
17061  * # Number of wave components
17062  */
17063  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth, __pyx_v_depth) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17064 
17065  /* "WaveTools.pyx":779
17066  * # Setting the depth
17067  * self.depth = depth
17068  * self.rec_direct = rec_direct # <<<<<<<<<<<<<<
17069  * # Number of wave components
17070  * self.N = N
17071  */
17072  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_rec_direct, __pyx_v_rec_direct) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17073 
17074  /* "WaveTools.pyx":781
17075  * self.rec_direct = rec_direct
17076  * # Number of wave components
17077  * self.N = N # <<<<<<<<<<<<<<
17078  * self.Nwaves = None
17079  * # Position of timeSeriesFile
17080  */
17081  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_N, __pyx_v_N) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17082 
17083  /* "WaveTools.pyx":782
17084  * # Number of wave components
17085  * self.N = N
17086  * self.Nwaves = None # <<<<<<<<<<<<<<
17087  * # Position of timeSeriesFile
17088  * if(len(timeSeriesPosition)==3):
17089  */
17090  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17091 
17092  /* "WaveTools.pyx":784
17093  * self.Nwaves = None
17094  * # Position of timeSeriesFile
17095  * if(len(timeSeriesPosition)==3): # <<<<<<<<<<<<<<
17096  * self.x0 = timeSeriesPosition[0]
17097  * self.y0 = timeSeriesPosition[1]
17098  */
17099  __pyx_t_1 = PyObject_Length(__pyx_v_timeSeriesPosition); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17100  __pyx_t_2 = ((__pyx_t_1 == 3) != 0);
17101  if (__pyx_t_2) {
17102 
17103  /* "WaveTools.pyx":785
17104  * # Position of timeSeriesFile
17105  * if(len(timeSeriesPosition)==3):
17106  * self.x0 = timeSeriesPosition[0] # <<<<<<<<<<<<<<
17107  * self.y0 = timeSeriesPosition[1]
17108  * self.z0 = timeSeriesPosition[2]
17109  */
17110  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timeSeriesPosition, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17111  __Pyx_GOTREF(__pyx_t_3);
17112  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_x0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17113  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17114 
17115  /* "WaveTools.pyx":786
17116  * if(len(timeSeriesPosition)==3):
17117  * self.x0 = timeSeriesPosition[0]
17118  * self.y0 = timeSeriesPosition[1] # <<<<<<<<<<<<<<
17119  * self.z0 = timeSeriesPosition[2]
17120  * else:
17121  */
17122  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timeSeriesPosition, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17123  __Pyx_GOTREF(__pyx_t_3);
17124  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_y0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17125  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17126 
17127  /* "WaveTools.pyx":787
17128  * self.x0 = timeSeriesPosition[0]
17129  * self.y0 = timeSeriesPosition[1]
17130  * self.z0 = timeSeriesPosition[2] # <<<<<<<<<<<<<<
17131  * else:
17132  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0)
17133  */
17134  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timeSeriesPosition, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17135  __Pyx_GOTREF(__pyx_t_3);
17136  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_z0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17137  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17138 
17139  /* "WaveTools.pyx":784
17140  * self.Nwaves = None
17141  * # Position of timeSeriesFile
17142  * if(len(timeSeriesPosition)==3): # <<<<<<<<<<<<<<
17143  * self.x0 = timeSeriesPosition[0]
17144  * self.y0 = timeSeriesPosition[1]
17145  */
17146  goto __pyx_L3;
17147  }
17148 
17149  /* "WaveTools.pyx":789
17150  * self.z0 = timeSeriesPosition[2]
17151  * else:
17152  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0) # <<<<<<<<<<<<<<
17153  * sys.exit(1)
17154  *
17155  */
17156  /*else*/ {
17157  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17158  __Pyx_GOTREF(__pyx_t_3);
17159  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17160  __Pyx_GOTREF(__pyx_t_4);
17161  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17162  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__78, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17163  __Pyx_GOTREF(__pyx_t_5);
17164  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17165  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17166  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17167 
17168  /* "WaveTools.pyx":790
17169  * else:
17170  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0)
17171  * sys.exit(1) # <<<<<<<<<<<<<<
17172  *
17173  *
17174  */
17175  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17176  __Pyx_GOTREF(__pyx_t_5);
17177  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17178  __Pyx_GOTREF(__pyx_t_4);
17179  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17180  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17181  __Pyx_GOTREF(__pyx_t_5);
17182  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17183  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17184  }
17185  __pyx_L3:;
17186 
17187  /* "WaveTools.pyx":794
17188  *
17189  * # Mean water level
17190  * self.mwl = mwl # <<<<<<<<<<<<<<
17191  * # Wave direction
17192  * self.waveDir = setDirVector(waveDir)
17193  */
17194  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17195 
17196  /* "WaveTools.pyx":796
17197  * self.mwl = mwl
17198  * # Wave direction
17199  * self.waveDir = setDirVector(waveDir) # <<<<<<<<<<<<<<
17200  * # Gravity
17201  * self.g = np.array(g)
17202  */
17203  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17204  __Pyx_GOTREF(__pyx_t_4);
17205  __pyx_t_3 = NULL;
17206  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
17207  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
17208  if (likely(__pyx_t_3)) {
17209  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
17210  __Pyx_INCREF(__pyx_t_3);
17211  __Pyx_INCREF(function);
17212  __Pyx_DECREF_SET(__pyx_t_4, function);
17213  }
17214  }
17215  if (!__pyx_t_3) {
17216  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_waveDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17217  __Pyx_GOTREF(__pyx_t_5);
17218  } else {
17219  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17220  __Pyx_GOTREF(__pyx_t_6);
17221  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
17222  __Pyx_INCREF(__pyx_v_waveDir);
17223  __Pyx_GIVEREF(__pyx_v_waveDir);
17224  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_waveDir);
17225  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17226  __Pyx_GOTREF(__pyx_t_5);
17227  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17228  }
17229  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17230  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17231  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17232 
17233  /* "WaveTools.pyx":798
17234  * self.waveDir = setDirVector(waveDir)
17235  * # Gravity
17236  * self.g = np.array(g) # <<<<<<<<<<<<<<
17237  * # Derived variables
17238  * # Gravity magnitude
17239  */
17240  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17241  __Pyx_GOTREF(__pyx_t_4);
17242  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17243  __Pyx_GOTREF(__pyx_t_6);
17244  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17245  __pyx_t_4 = NULL;
17246  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17247  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
17248  if (likely(__pyx_t_4)) {
17249  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17250  __Pyx_INCREF(__pyx_t_4);
17251  __Pyx_INCREF(function);
17252  __Pyx_DECREF_SET(__pyx_t_6, function);
17253  }
17254  }
17255  if (!__pyx_t_4) {
17256  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_g); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17257  __Pyx_GOTREF(__pyx_t_5);
17258  } else {
17259  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17260  __Pyx_GOTREF(__pyx_t_3);
17261  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
17262  __Pyx_INCREF(__pyx_v_g);
17263  __Pyx_GIVEREF(__pyx_v_g);
17264  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_g);
17265  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17266  __Pyx_GOTREF(__pyx_t_5);
17267  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17268  }
17269  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17270  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_g, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17271  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17272 
17273  /* "WaveTools.pyx":801
17274  * # Derived variables
17275  * # Gravity magnitude
17276  * self.gAbs = sqrt(sum(g * g)) # <<<<<<<<<<<<<<
17277  * # Definition of gravity direction
17278  * self.vDir = setVertDir(g)
17279  */
17280  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17281  __Pyx_GOTREF(__pyx_t_6);
17282  __pyx_t_3 = PyNumber_Multiply(__pyx_v_g, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17283  __Pyx_GOTREF(__pyx_t_3);
17284  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17285  __Pyx_GOTREF(__pyx_t_4);
17286  __Pyx_GIVEREF(__pyx_t_3);
17287  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
17288  __pyx_t_3 = 0;
17289  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17290  __Pyx_GOTREF(__pyx_t_3);
17291  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17292  __pyx_t_4 = NULL;
17293  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17294  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
17295  if (likely(__pyx_t_4)) {
17296  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17297  __Pyx_INCREF(__pyx_t_4);
17298  __Pyx_INCREF(function);
17299  __Pyx_DECREF_SET(__pyx_t_6, function);
17300  }
17301  }
17302  if (!__pyx_t_4) {
17303  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17304  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17305  __Pyx_GOTREF(__pyx_t_5);
17306  } else {
17307  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17308  __Pyx_GOTREF(__pyx_t_7);
17309  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
17310  __Pyx_GIVEREF(__pyx_t_3);
17311  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
17312  __pyx_t_3 = 0;
17313  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17314  __Pyx_GOTREF(__pyx_t_5);
17315  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17316  }
17317  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17318  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gAbs, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17319  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17320 
17321  /* "WaveTools.pyx":803
17322  * self.gAbs = sqrt(sum(g * g))
17323  * # Definition of gravity direction
17324  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
17325  * dirCheck(self.waveDir,self.vDir)
17326  * #Reading time series
17327  */
17328  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17329  __Pyx_GOTREF(__pyx_t_6);
17330  __pyx_t_7 = NULL;
17331  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17332  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
17333  if (likely(__pyx_t_7)) {
17334  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17335  __Pyx_INCREF(__pyx_t_7);
17336  __Pyx_INCREF(function);
17337  __Pyx_DECREF_SET(__pyx_t_6, function);
17338  }
17339  }
17340  if (!__pyx_t_7) {
17341  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_g); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17342  __Pyx_GOTREF(__pyx_t_5);
17343  } else {
17344  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17345  __Pyx_GOTREF(__pyx_t_3);
17346  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
17347  __Pyx_INCREF(__pyx_v_g);
17348  __Pyx_GIVEREF(__pyx_v_g);
17349  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_g);
17350  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17351  __Pyx_GOTREF(__pyx_t_5);
17352  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17353  }
17354  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17355  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17356  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17357 
17358  /* "WaveTools.pyx":804
17359  * # Definition of gravity direction
17360  * self.vDir = setVertDir(g)
17361  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
17362  * #Reading time series
17363  * filetype = timeSeriesFile[-4:]
17364  */
17365  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_dirCheck); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17366  __Pyx_GOTREF(__pyx_t_6);
17367  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17368  __Pyx_GOTREF(__pyx_t_3);
17369  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17370  __Pyx_GOTREF(__pyx_t_7);
17371  __pyx_t_4 = NULL;
17372  __pyx_t_1 = 0;
17373  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17374  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
17375  if (likely(__pyx_t_4)) {
17376  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17377  __Pyx_INCREF(__pyx_t_4);
17378  __Pyx_INCREF(function);
17379  __Pyx_DECREF_SET(__pyx_t_6, function);
17380  __pyx_t_1 = 1;
17381  }
17382  }
17383  __pyx_t_8 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17384  __Pyx_GOTREF(__pyx_t_8);
17385  if (__pyx_t_4) {
17386  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
17387  }
17388  __Pyx_GIVEREF(__pyx_t_3);
17389  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_t_3);
17390  __Pyx_GIVEREF(__pyx_t_7);
17391  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_7);
17392  __pyx_t_3 = 0;
17393  __pyx_t_7 = 0;
17394  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17395  __Pyx_GOTREF(__pyx_t_5);
17396  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17397  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17398  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17399 
17400  /* "WaveTools.pyx":806
17401  * dirCheck(self.waveDir,self.vDir)
17402  * #Reading time series
17403  * filetype = timeSeriesFile[-4:] # <<<<<<<<<<<<<<
17404  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17405  * fid = open(timeSeriesFile,"r")
17406  */
17407  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_timeSeriesFile, -4L, 0, NULL, NULL, &__pyx_slice__80, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17408  __Pyx_GOTREF(__pyx_t_5);
17409  __pyx_v_filetype = __pyx_t_5;
17410  __pyx_t_5 = 0;
17411 
17412  /* "WaveTools.pyx":807
17413  * #Reading time series
17414  * filetype = timeSeriesFile[-4:]
17415  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0) # <<<<<<<<<<<<<<
17416  * fid = open(timeSeriesFile,"r")
17417  * if (filetype !=".txt") and (filetype != ".csv"):
17418  */
17419  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17420  __Pyx_GOTREF(__pyx_t_5);
17421  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17422  __Pyx_GOTREF(__pyx_t_6);
17423  __Pyx_INCREF(__pyx_v_filetype);
17424  __Pyx_GIVEREF(__pyx_v_filetype);
17425  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_filetype);
17426  __Pyx_INCREF(__pyx_v_timeSeriesFile);
17427  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
17428  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_timeSeriesFile);
17429  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Reading_timeseries, __pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17430  __Pyx_GOTREF(__pyx_t_8);
17431  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17432  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17433  __Pyx_GOTREF(__pyx_t_6);
17434  __Pyx_GIVEREF(__pyx_t_8);
17435  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
17436  __pyx_t_8 = 0;
17437  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17438  __Pyx_GOTREF(__pyx_t_8);
17439  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17440  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17441  __Pyx_GOTREF(__pyx_t_7);
17442  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17443  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17444  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17445  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17446 
17447  /* "WaveTools.pyx":808
17448  * filetype = timeSeriesFile[-4:]
17449  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17450  * fid = open(timeSeriesFile,"r") # <<<<<<<<<<<<<<
17451  * if (filetype !=".txt") and (filetype != ".csv"):
17452  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17453  */
17454  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17455  __Pyx_GOTREF(__pyx_t_7);
17456  __Pyx_INCREF(__pyx_v_timeSeriesFile);
17457  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
17458  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_timeSeriesFile);
17459  __Pyx_INCREF(__pyx_n_s_r);
17460  __Pyx_GIVEREF(__pyx_n_s_r);
17461  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_r);
17462  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17463  __Pyx_GOTREF(__pyx_t_8);
17464  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17465  __pyx_v_fid = __pyx_t_8;
17466  __pyx_t_8 = 0;
17467 
17468  /* "WaveTools.pyx":809
17469  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17470  * fid = open(timeSeriesFile,"r")
17471  * if (filetype !=".txt") and (filetype != ".csv"): # <<<<<<<<<<<<<<
17472  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17473  * sys.exit(1)
17474  */
17475  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_txt, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17476  if (__pyx_t_9) {
17477  } else {
17478  __pyx_t_2 = __pyx_t_9;
17479  goto __pyx_L5_bool_binop_done;
17480  }
17481  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_csv, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17482  __pyx_t_2 = __pyx_t_9;
17483  __pyx_L5_bool_binop_done:;
17484  if (__pyx_t_2) {
17485 
17486  /* "WaveTools.pyx":810
17487  * fid = open(timeSeriesFile,"r")
17488  * if (filetype !=".txt") and (filetype != ".csv"):
17489  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0) # <<<<<<<<<<<<<<
17490  * sys.exit(1)
17491  * elif (filetype == ".csv"):
17492  */
17493  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17494  __Pyx_GOTREF(__pyx_t_8);
17495  __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_File_s_must_be_give, __pyx_v_timeSeriesFile); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17496  __Pyx_GOTREF(__pyx_t_7);
17497  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17498  __Pyx_GOTREF(__pyx_t_6);
17499  __Pyx_GIVEREF(__pyx_t_7);
17500  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
17501  __pyx_t_7 = 0;
17502  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17503  __Pyx_GOTREF(__pyx_t_7);
17504  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17505  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17506  __Pyx_GOTREF(__pyx_t_5);
17507  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17508  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17509  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17510  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17511 
17512  /* "WaveTools.pyx":811
17513  * if (filetype !=".txt") and (filetype != ".csv"):
17514  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17515  * sys.exit(1) # <<<<<<<<<<<<<<
17516  * elif (filetype == ".csv"):
17517  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17518  */
17519  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17520  __Pyx_GOTREF(__pyx_t_5);
17521  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17522  __Pyx_GOTREF(__pyx_t_7);
17523  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17524  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17525  __Pyx_GOTREF(__pyx_t_5);
17526  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17527  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17528 
17529  /* "WaveTools.pyx":809
17530  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17531  * fid = open(timeSeriesFile,"r")
17532  * if (filetype !=".txt") and (filetype != ".csv"): # <<<<<<<<<<<<<<
17533  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17534  * sys.exit(1)
17535  */
17536  goto __pyx_L4;
17537  }
17538 
17539  /* "WaveTools.pyx":812
17540  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17541  * sys.exit(1)
17542  * elif (filetype == ".csv"): # <<<<<<<<<<<<<<
17543  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17544  * else:
17545  */
17546  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_csv, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17547  if (__pyx_t_2) {
17548 
17549  /* "WaveTools.pyx":813
17550  * sys.exit(1)
17551  * elif (filetype == ".csv"):
17552  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",") # <<<<<<<<<<<<<<
17553  * else:
17554  * tdata = np.loadtxt(fid,skiprows=skiprows)
17555  */
17556  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17557  __Pyx_GOTREF(__pyx_t_5);
17558  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_loadtxt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17559  __Pyx_GOTREF(__pyx_t_7);
17560  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17561  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17562  __Pyx_GOTREF(__pyx_t_5);
17563  __Pyx_INCREF(__pyx_v_fid);
17564  __Pyx_GIVEREF(__pyx_v_fid);
17565  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_fid);
17566  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17567  __Pyx_GOTREF(__pyx_t_6);
17568  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_skiprows, __pyx_v_skiprows) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17569  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_delimiter, __pyx_kp_s__82) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17570  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17571  __Pyx_GOTREF(__pyx_t_8);
17572  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17573  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17574  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17575  __pyx_v_tdata = __pyx_t_8;
17576  __pyx_t_8 = 0;
17577 
17578  /* "WaveTools.pyx":812
17579  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17580  * sys.exit(1)
17581  * elif (filetype == ".csv"): # <<<<<<<<<<<<<<
17582  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17583  * else:
17584  */
17585  goto __pyx_L4;
17586  }
17587 
17588  /* "WaveTools.pyx":815
17589  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17590  * else:
17591  * tdata = np.loadtxt(fid,skiprows=skiprows) # <<<<<<<<<<<<<<
17592  * fid.close()
17593  * #Checks for tseries file
17594  */
17595  /*else*/ {
17596  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17597  __Pyx_GOTREF(__pyx_t_8);
17598  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_loadtxt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17599  __Pyx_GOTREF(__pyx_t_6);
17600  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17601  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17602  __Pyx_GOTREF(__pyx_t_8);
17603  __Pyx_INCREF(__pyx_v_fid);
17604  __Pyx_GIVEREF(__pyx_v_fid);
17605  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_fid);
17606  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17607  __Pyx_GOTREF(__pyx_t_5);
17608  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_skiprows, __pyx_v_skiprows) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17609  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17610  __Pyx_GOTREF(__pyx_t_7);
17611  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17612  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17613  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17614  __pyx_v_tdata = __pyx_t_7;
17615  __pyx_t_7 = 0;
17616  }
17617  __pyx_L4:;
17618 
17619  /* "WaveTools.pyx":816
17620  * else:
17621  * tdata = np.loadtxt(fid,skiprows=skiprows)
17622  * fid.close() # <<<<<<<<<<<<<<
17623  * #Checks for tseries file
17624  * # Only 2 columns: time & eta
17625  */
17626  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fid, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17627  __Pyx_GOTREF(__pyx_t_5);
17628  __pyx_t_8 = NULL;
17629  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
17630  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
17631  if (likely(__pyx_t_8)) {
17632  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
17633  __Pyx_INCREF(__pyx_t_8);
17634  __Pyx_INCREF(function);
17635  __Pyx_DECREF_SET(__pyx_t_5, function);
17636  }
17637  }
17638  if (__pyx_t_8) {
17639  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17640  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17641  } else {
17642  __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17643  }
17644  __Pyx_GOTREF(__pyx_t_7);
17645  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17646  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17647 
17648  /* "WaveTools.pyx":819
17649  * #Checks for tseries file
17650  * # Only 2 columns: time & eta
17651  * ncols = len(tdata[0,:]) # <<<<<<<<<<<<<<
17652  * if ncols != 2:
17653  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17654  */
17655  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
17656  __pyx_t_7 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__84); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17657  __Pyx_GOTREF(__pyx_t_7);
17658  __pyx_t_1 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17659  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17660  __pyx_v_ncols = __pyx_t_1;
17661 
17662  /* "WaveTools.pyx":820
17663  * # Only 2 columns: time & eta
17664  * ncols = len(tdata[0,:])
17665  * if ncols != 2: # <<<<<<<<<<<<<<
17666  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17667  * sys.exit(1)
17668  */
17669  __pyx_t_2 = ((__pyx_v_ncols != 2) != 0);
17670  if (__pyx_t_2) {
17671 
17672  /* "WaveTools.pyx":821
17673  * ncols = len(tdata[0,:])
17674  * if ncols != 2:
17675  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0) # <<<<<<<<<<<<<<
17676  * sys.exit(1)
17677  * time_temp = tdata[:,0]
17678  */
17679  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17680  __Pyx_GOTREF(__pyx_t_7);
17681  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Timeseries_file_s_m, __pyx_v_timeSeriesFile); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17682  __Pyx_GOTREF(__pyx_t_5);
17683  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17684  __Pyx_GOTREF(__pyx_t_8);
17685  __Pyx_GIVEREF(__pyx_t_5);
17686  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
17687  __pyx_t_5 = 0;
17688  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17689  __Pyx_GOTREF(__pyx_t_5);
17690  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17691  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17692  __Pyx_GOTREF(__pyx_t_6);
17693  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17694  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17695  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17696  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17697 
17698  /* "WaveTools.pyx":822
17699  * if ncols != 2:
17700  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17701  * sys.exit(1) # <<<<<<<<<<<<<<
17702  * time_temp = tdata[:,0]
17703  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
17704  */
17705  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17706  __Pyx_GOTREF(__pyx_t_6);
17707  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17708  __Pyx_GOTREF(__pyx_t_5);
17709  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17710  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17711  __Pyx_GOTREF(__pyx_t_6);
17712  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17713  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17714 
17715  /* "WaveTools.pyx":820
17716  * # Only 2 columns: time & eta
17717  * ncols = len(tdata[0,:])
17718  * if ncols != 2: # <<<<<<<<<<<<<<
17719  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17720  * sys.exit(1)
17721  */
17722  }
17723 
17724  /* "WaveTools.pyx":823
17725  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17726  * sys.exit(1)
17727  * time_temp = tdata[:,0] # <<<<<<<<<<<<<<
17728  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
17729  *
17730  */
17731  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
17732  __pyx_t_6 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__87); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17733  __Pyx_GOTREF(__pyx_t_6);
17734  __pyx_v_time_temp = __pyx_t_6;
17735  __pyx_t_6 = 0;
17736 
17737  /* "WaveTools.pyx":824
17738  * sys.exit(1)
17739  * time_temp = tdata[:,0]
17740  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1) # <<<<<<<<<<<<<<
17741  *
17742  *
17743  */
17744  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_time_temp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17745  __Pyx_GOTREF(__pyx_t_6);
17746  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_time_temp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17747  __Pyx_GOTREF(__pyx_t_5);
17748  __pyx_t_8 = PyNumber_Subtract(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17749  __Pyx_GOTREF(__pyx_t_8);
17750  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17751  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17752  __pyx_t_1 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17753  __pyx_t_5 = PyInt_FromSsize_t((__pyx_t_1 - 1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17754  __Pyx_GOTREF(__pyx_t_5);
17755  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17756  __Pyx_GOTREF(__pyx_t_6);
17757  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17758  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17759  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dt, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17760  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17761 
17762  /* "WaveTools.pyx":829
17763  *
17764  * # If necessary, perform interpolation
17765  * doInterp = False # <<<<<<<<<<<<<<
17766  * for i in range(1,len(time_temp)):
17767  * dt_temp = time_temp[i]-time_temp[i-1]
17768  */
17769  __pyx_v_doInterp = 0;
17770 
17771  /* "WaveTools.pyx":830
17772  * # If necessary, perform interpolation
17773  * doInterp = False
17774  * for i in range(1,len(time_temp)): # <<<<<<<<<<<<<<
17775  * dt_temp = time_temp[i]-time_temp[i-1]
17776  * #check if time is at first column
17777  */
17778  __pyx_t_1 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17779  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17780  __Pyx_GOTREF(__pyx_t_6);
17781  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17782  __Pyx_GOTREF(__pyx_t_5);
17783  __Pyx_INCREF(__pyx_int_1);
17784  __Pyx_GIVEREF(__pyx_int_1);
17785  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_1);
17786  __Pyx_GIVEREF(__pyx_t_6);
17787  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
17788  __pyx_t_6 = 0;
17789  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17790  __Pyx_GOTREF(__pyx_t_6);
17791  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17792  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
17793  __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
17794  __pyx_t_10 = NULL;
17795  } else {
17796  __pyx_t_1 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17797  __Pyx_GOTREF(__pyx_t_5);
17798  __pyx_t_10 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17799  }
17800  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17801  for (;;) {
17802  if (likely(!__pyx_t_10)) {
17803  if (likely(PyList_CheckExact(__pyx_t_5))) {
17804  if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_5)) break;
17805  #if CYTHON_COMPILING_IN_CPYTHON
17806  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17807  #else
17808  __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17809  __Pyx_GOTREF(__pyx_t_6);
17810  #endif
17811  } else {
17812  if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
17813  #if CYTHON_COMPILING_IN_CPYTHON
17814  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17815  #else
17816  __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17817  __Pyx_GOTREF(__pyx_t_6);
17818  #endif
17819  }
17820  } else {
17821  __pyx_t_6 = __pyx_t_10(__pyx_t_5);
17822  if (unlikely(!__pyx_t_6)) {
17823  PyObject* exc_type = PyErr_Occurred();
17824  if (exc_type) {
17825  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
17826  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17827  }
17828  break;
17829  }
17830  __Pyx_GOTREF(__pyx_t_6);
17831  }
17832  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6);
17833  __pyx_t_6 = 0;
17834 
17835  /* "WaveTools.pyx":831
17836  * doInterp = False
17837  * for i in range(1,len(time_temp)):
17838  * dt_temp = time_temp[i]-time_temp[i-1] # <<<<<<<<<<<<<<
17839  * #check if time is at first column
17840  * if time_temp[i]<=time_temp[i-1]:
17841  */
17842  __pyx_t_6 = PyObject_GetItem(__pyx_v_time_temp, __pyx_v_i); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17843  __Pyx_GOTREF(__pyx_t_6);
17844  __pyx_t_8 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17845  __Pyx_GOTREF(__pyx_t_8);
17846  __pyx_t_7 = PyObject_GetItem(__pyx_v_time_temp, __pyx_t_8); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17847  __Pyx_GOTREF(__pyx_t_7);
17848  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17849  __pyx_t_8 = PyNumber_Subtract(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17850  __Pyx_GOTREF(__pyx_t_8);
17851  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17852  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17853  __Pyx_XDECREF_SET(__pyx_v_dt_temp, __pyx_t_8);
17854  __pyx_t_8 = 0;
17855 
17856  /* "WaveTools.pyx":833
17857  * dt_temp = time_temp[i]-time_temp[i-1]
17858  * #check if time is at first column
17859  * if time_temp[i]<=time_temp[i-1]: # <<<<<<<<<<<<<<
17860  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
17861  * sys.exit(1)
17862  */
17863  __pyx_t_8 = PyObject_GetItem(__pyx_v_time_temp, __pyx_v_i); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17864  __Pyx_GOTREF(__pyx_t_8);
17865  __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17866  __Pyx_GOTREF(__pyx_t_7);
17867  __pyx_t_6 = PyObject_GetItem(__pyx_v_time_temp, __pyx_t_7); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17868  __Pyx_GOTREF(__pyx_t_6);
17869  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17870  __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_6, Py_LE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17871  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17872  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17873  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17874  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17875  if (__pyx_t_2) {
17876 
17877  /* "WaveTools.pyx":834
17878  * #check if time is at first column
17879  * if time_temp[i]<=time_temp[i-1]:
17880  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) ) # <<<<<<<<<<<<<<
17881  * sys.exit(1)
17882  * #check if sampling rate is constant
17883  */
17884  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17885  __Pyx_GOTREF(__pyx_t_6);
17886  __pyx_t_8 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17887  __Pyx_GOTREF(__pyx_t_8);
17888  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17889  __Pyx_GOTREF(__pyx_t_3);
17890  __Pyx_GIVEREF(__pyx_t_8);
17891  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
17892  __Pyx_INCREF(__pyx_v_i);
17893  __Pyx_GIVEREF(__pyx_v_i);
17894  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_i);
17895  __Pyx_INCREF(__pyx_v_timeSeriesFile);
17896  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
17897  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_timeSeriesFile);
17898  __pyx_t_8 = 0;
17899  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Found_not_consisten, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17900  __Pyx_GOTREF(__pyx_t_8);
17901  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17902  __pyx_t_3 = NULL;
17903  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17904  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
17905  if (likely(__pyx_t_3)) {
17906  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17907  __Pyx_INCREF(__pyx_t_3);
17908  __Pyx_INCREF(function);
17909  __Pyx_DECREF_SET(__pyx_t_6, function);
17910  }
17911  }
17912  if (!__pyx_t_3) {
17913  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17914  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17915  __Pyx_GOTREF(__pyx_t_7);
17916  } else {
17917  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17918  __Pyx_GOTREF(__pyx_t_4);
17919  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
17920  __Pyx_GIVEREF(__pyx_t_8);
17921  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_8);
17922  __pyx_t_8 = 0;
17923  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17924  __Pyx_GOTREF(__pyx_t_7);
17925  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17926  }
17927  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17928  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17929 
17930  /* "WaveTools.pyx":835
17931  * if time_temp[i]<=time_temp[i-1]:
17932  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
17933  * sys.exit(1) # <<<<<<<<<<<<<<
17934  * #check if sampling rate is constant
17935  * if dt_temp!=self.dt:
17936  */
17937  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17938  __Pyx_GOTREF(__pyx_t_7);
17939  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17940  __Pyx_GOTREF(__pyx_t_6);
17941  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17942  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17943  __Pyx_GOTREF(__pyx_t_7);
17944  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17945  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17946 
17947  /* "WaveTools.pyx":833
17948  * dt_temp = time_temp[i]-time_temp[i-1]
17949  * #check if time is at first column
17950  * if time_temp[i]<=time_temp[i-1]: # <<<<<<<<<<<<<<
17951  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
17952  * sys.exit(1)
17953  */
17954  }
17955 
17956  /* "WaveTools.pyx":837
17957  * sys.exit(1)
17958  * #check if sampling rate is constant
17959  * if dt_temp!=self.dt: # <<<<<<<<<<<<<<
17960  * doInterp = True
17961  * if(doInterp):
17962  */
17963  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17964  __Pyx_GOTREF(__pyx_t_7);
17965  __pyx_t_6 = PyObject_RichCompare(__pyx_v_dt_temp, __pyx_t_7, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17966  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17967  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17968  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17969  if (__pyx_t_2) {
17970 
17971  /* "WaveTools.pyx":838
17972  * #check if sampling rate is constant
17973  * if dt_temp!=self.dt:
17974  * doInterp = True # <<<<<<<<<<<<<<
17975  * if(doInterp):
17976  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
17977  */
17978  __pyx_v_doInterp = 1;
17979 
17980  /* "WaveTools.pyx":837
17981  * sys.exit(1)
17982  * #check if sampling rate is constant
17983  * if dt_temp!=self.dt: # <<<<<<<<<<<<<<
17984  * doInterp = True
17985  * if(doInterp):
17986  */
17987  }
17988 
17989  /* "WaveTools.pyx":830
17990  * # If necessary, perform interpolation
17991  * doInterp = False
17992  * for i in range(1,len(time_temp)): # <<<<<<<<<<<<<<
17993  * dt_temp = time_temp[i]-time_temp[i-1]
17994  * #check if time is at first column
17995  */
17996  }
17997  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17998 
17999  /* "WaveTools.pyx":839
18000  * if dt_temp!=self.dt:
18001  * doInterp = True
18002  * if(doInterp): # <<<<<<<<<<<<<<
18003  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
18004  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
18005  */
18006  __pyx_t_2 = (__pyx_v_doInterp != 0);
18007  if (__pyx_t_2) {
18008 
18009  /* "WaveTools.pyx":840
18010  * doInterp = True
18011  * if(doInterp):
18012  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0) # <<<<<<<<<<<<<<
18013  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
18014  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
18015  */
18016  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18017  __Pyx_GOTREF(__pyx_t_5);
18018  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18019  __Pyx_GOTREF(__pyx_t_6);
18020  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18021  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__89, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18022  __Pyx_GOTREF(__pyx_t_7);
18023  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18024  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18025  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18026 
18027  /* "WaveTools.pyx":841
18028  * if(doInterp):
18029  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
18030  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp)) # <<<<<<<<<<<<<<
18031  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
18032  * else:
18033  */
18034  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18035  __Pyx_GOTREF(__pyx_t_6);
18036  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18037  __Pyx_GOTREF(__pyx_t_5);
18038  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18039  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_time_temp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18040  __Pyx_GOTREF(__pyx_t_6);
18041  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_time_temp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18042  __Pyx_GOTREF(__pyx_t_4);
18043  __pyx_t_1 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18044  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18045  __Pyx_GOTREF(__pyx_t_8);
18046  __pyx_t_3 = NULL;
18047  __pyx_t_1 = 0;
18048  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
18049  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
18050  if (likely(__pyx_t_3)) {
18051  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
18052  __Pyx_INCREF(__pyx_t_3);
18053  __Pyx_INCREF(function);
18054  __Pyx_DECREF_SET(__pyx_t_5, function);
18055  __pyx_t_1 = 1;
18056  }
18057  }
18058  __pyx_t_11 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18059  __Pyx_GOTREF(__pyx_t_11);
18060  if (__pyx_t_3) {
18061  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
18062  }
18063  __Pyx_GIVEREF(__pyx_t_6);
18064  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_t_6);
18065  __Pyx_GIVEREF(__pyx_t_4);
18066  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_4);
18067  __Pyx_GIVEREF(__pyx_t_8);
18068  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_8);
18069  __pyx_t_6 = 0;
18070  __pyx_t_4 = 0;
18071  __pyx_t_8 = 0;
18072  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18073  __Pyx_GOTREF(__pyx_t_7);
18074  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18075  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18076  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_time, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18077  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18078 
18079  /* "WaveTools.pyx":842
18080  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
18081  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
18082  * self.eta = np.interp(self.time,time_temp,tdata[:,1]) # <<<<<<<<<<<<<<
18083  * else:
18084  * self.time = time_temp
18085  */
18086  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18087  __Pyx_GOTREF(__pyx_t_5);
18088  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_interp); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18089  __Pyx_GOTREF(__pyx_t_11);
18090  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18091  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18092  __Pyx_GOTREF(__pyx_t_5);
18093  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
18094  __pyx_t_8 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__91); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18095  __Pyx_GOTREF(__pyx_t_8);
18096  __pyx_t_4 = NULL;
18097  __pyx_t_1 = 0;
18098  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
18099  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
18100  if (likely(__pyx_t_4)) {
18101  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
18102  __Pyx_INCREF(__pyx_t_4);
18103  __Pyx_INCREF(function);
18104  __Pyx_DECREF_SET(__pyx_t_11, function);
18105  __pyx_t_1 = 1;
18106  }
18107  }
18108  __pyx_t_6 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18109  __Pyx_GOTREF(__pyx_t_6);
18110  if (__pyx_t_4) {
18111  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
18112  }
18113  __Pyx_GIVEREF(__pyx_t_5);
18114  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_t_5);
18115  __Pyx_INCREF(__pyx_v_time_temp);
18116  __Pyx_GIVEREF(__pyx_v_time_temp);
18117  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_v_time_temp);
18118  __Pyx_GIVEREF(__pyx_t_8);
18119  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_1, __pyx_t_8);
18120  __pyx_t_5 = 0;
18121  __pyx_t_8 = 0;
18122  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18123  __Pyx_GOTREF(__pyx_t_7);
18124  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18125  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18126  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18127  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18128 
18129  /* "WaveTools.pyx":839
18130  * if dt_temp!=self.dt:
18131  * doInterp = True
18132  * if(doInterp): # <<<<<<<<<<<<<<
18133  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
18134  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
18135  */
18136  goto __pyx_L12;
18137  }
18138 
18139  /* "WaveTools.pyx":844
18140  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
18141  * else:
18142  * self.time = time_temp # <<<<<<<<<<<<<<
18143  * self.eta = tdata[:,1]
18144  *
18145  */
18146  /*else*/ {
18147  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_time, __pyx_v_time_temp) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18148 
18149  /* "WaveTools.pyx":845
18150  * else:
18151  * self.time = time_temp
18152  * self.eta = tdata[:,1] # <<<<<<<<<<<<<<
18153  *
18154  * self.t0 = self.time[0]
18155  */
18156  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
18157  __pyx_t_7 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__93); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18158  __Pyx_GOTREF(__pyx_t_7);
18159  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18160  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18161  }
18162  __pyx_L12:;
18163 
18164  /* "WaveTools.pyx":847
18165  * self.eta = tdata[:,1]
18166  *
18167  * self.t0 = self.time[0] # <<<<<<<<<<<<<<
18168  * # Remove mean level from raw data
18169  * self.eta -= np.mean(self.eta)
18170  */
18171  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18172  __Pyx_GOTREF(__pyx_t_7);
18173  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18174  __Pyx_GOTREF(__pyx_t_11);
18175  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18176  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_t0, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18177  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18178 
18179  /* "WaveTools.pyx":849
18180  * self.t0 = self.time[0]
18181  * # Remove mean level from raw data
18182  * self.eta -= np.mean(self.eta) # <<<<<<<<<<<<<<
18183  * # Filter out first 2.5 % and last 2.5% to make the signal periodic
18184  * self.eta *= costap(len(self.time),cutoff=cutoffTotal)
18185  */
18186  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18187  __Pyx_GOTREF(__pyx_t_11);
18188  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18189  __Pyx_GOTREF(__pyx_t_6);
18190  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_mean); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18191  __Pyx_GOTREF(__pyx_t_8);
18192  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18193  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18194  __Pyx_GOTREF(__pyx_t_6);
18195  __pyx_t_5 = NULL;
18196  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
18197  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
18198  if (likely(__pyx_t_5)) {
18199  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
18200  __Pyx_INCREF(__pyx_t_5);
18201  __Pyx_INCREF(function);
18202  __Pyx_DECREF_SET(__pyx_t_8, function);
18203  }
18204  }
18205  if (!__pyx_t_5) {
18206  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18207  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18208  __Pyx_GOTREF(__pyx_t_7);
18209  } else {
18210  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18211  __Pyx_GOTREF(__pyx_t_4);
18212  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
18213  __Pyx_GIVEREF(__pyx_t_6);
18214  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
18215  __pyx_t_6 = 0;
18216  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18217  __Pyx_GOTREF(__pyx_t_7);
18218  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18219  }
18220  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18221  __pyx_t_8 = PyNumber_InPlaceSubtract(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18222  __Pyx_GOTREF(__pyx_t_8);
18223  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18224  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18225  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18226  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18227 
18228  /* "WaveTools.pyx":851
18229  * self.eta -= np.mean(self.eta)
18230  * # Filter out first 2.5 % and last 2.5% to make the signal periodic
18231  * self.eta *= costap(len(self.time),cutoff=cutoffTotal) # <<<<<<<<<<<<<<
18232  * # clear tdata from memory
18233  * del tdata
18234  */
18235  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18236  __Pyx_GOTREF(__pyx_t_8);
18237  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_costap); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18238  __Pyx_GOTREF(__pyx_t_7);
18239  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18240  __Pyx_GOTREF(__pyx_t_11);
18241  __pyx_t_1 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18242  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18243  __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18244  __Pyx_GOTREF(__pyx_t_11);
18245  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18246  __Pyx_GOTREF(__pyx_t_4);
18247  __Pyx_GIVEREF(__pyx_t_11);
18248  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11);
18249  __pyx_t_11 = 0;
18250  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18251  __Pyx_GOTREF(__pyx_t_11);
18252  if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_cutoff, __pyx_v_cutoffTotal) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18253  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18254  __Pyx_GOTREF(__pyx_t_6);
18255  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18256  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18257  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18258  __pyx_t_11 = PyNumber_InPlaceMultiply(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18259  __Pyx_GOTREF(__pyx_t_11);
18260  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18261  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18262  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18263  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18264 
18265  /* "WaveTools.pyx":853
18266  * self.eta *= costap(len(self.time),cutoff=cutoffTotal)
18267  * # clear tdata from memory
18268  * del tdata # <<<<<<<<<<<<<<
18269  * # Calculate time lenght
18270  * self.tlength = (self.time[-1]-self.time[0])
18271  */
18272  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
18273  __Pyx_DECREF(__pyx_v_tdata);
18274  __pyx_v_tdata = NULL;
18275 
18276  /* "WaveTools.pyx":855
18277  * del tdata
18278  * # Calculate time lenght
18279  * self.tlength = (self.time[-1]-self.time[0]) # <<<<<<<<<<<<<<
18280  * # Matrix initialisation
18281  * self.windows_handover = []
18282  */
18283  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18284  __Pyx_GOTREF(__pyx_t_11);
18285  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_11, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18286  __Pyx_GOTREF(__pyx_t_6);
18287  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18288  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18289  __Pyx_GOTREF(__pyx_t_11);
18290  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18291  __Pyx_GOTREF(__pyx_t_8);
18292  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18293  __pyx_t_11 = PyNumber_Subtract(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18294  __Pyx_GOTREF(__pyx_t_11);
18295  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18296  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18297  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_tlength, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18298  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18299 
18300  /* "WaveTools.pyx":857
18301  * self.tlength = (self.time[-1]-self.time[0])
18302  * # Matrix initialisation
18303  * self.windows_handover = [] # <<<<<<<<<<<<<<
18304  * self.windows_rec = []
18305  *
18306  */
18307  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18308  __Pyx_GOTREF(__pyx_t_11);
18309  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windows_handover, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18310  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18311 
18312  /* "WaveTools.pyx":858
18313  * # Matrix initialisation
18314  * self.windows_handover = []
18315  * self.windows_rec = [] # <<<<<<<<<<<<<<
18316  *
18317  * # Direct decomposition of the time series for using at reconstruct_direct
18318  */
18319  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18320  __Pyx_GOTREF(__pyx_t_11);
18321  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18322  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18323 
18324  /* "WaveTools.pyx":861
18325  *
18326  * # Direct decomposition of the time series for using at reconstruct_direct
18327  * if (self.rec_direct): # <<<<<<<<<<<<<<
18328  * Nf = self.N
18329  * self.nfft=len(self.time)
18330  */
18331  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_rec_direct); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18332  __Pyx_GOTREF(__pyx_t_11);
18333  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18334  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18335  if (__pyx_t_2) {
18336 
18337  /* "WaveTools.pyx":862
18338  * # Direct decomposition of the time series for using at reconstruct_direct
18339  * if (self.rec_direct):
18340  * Nf = self.N # <<<<<<<<<<<<<<
18341  * self.nfft=len(self.time)
18342  * logEvent("WaveTools.py: performing a direct series decomposition")
18343  */
18344  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18345  __Pyx_GOTREF(__pyx_t_11);
18346  __pyx_v_Nf = __pyx_t_11;
18347  __pyx_t_11 = 0;
18348 
18349  /* "WaveTools.pyx":863
18350  * if (self.rec_direct):
18351  * Nf = self.N
18352  * self.nfft=len(self.time) # <<<<<<<<<<<<<<
18353  * logEvent("WaveTools.py: performing a direct series decomposition")
18354  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18355  */
18356  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18357  __Pyx_GOTREF(__pyx_t_11);
18358  __pyx_t_1 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18359  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18360  __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18361  __Pyx_GOTREF(__pyx_t_11);
18362  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_nfft, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18363  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18364 
18365  /* "WaveTools.pyx":864
18366  * Nf = self.N
18367  * self.nfft=len(self.time)
18368  * logEvent("WaveTools.py: performing a direct series decomposition") # <<<<<<<<<<<<<<
18369  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18370  * self.ai = self.decomp[1]
18371  */
18372  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18373  __Pyx_GOTREF(__pyx_t_11);
18374  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18375  __Pyx_GOTREF(__pyx_t_8);
18376  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18377  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18378 
18379  /* "WaveTools.pyx":865
18380  * self.nfft=len(self.time)
18381  * logEvent("WaveTools.py: performing a direct series decomposition")
18382  * self.decomp = decompose_tseries(self.time,self.eta,self.dt) # <<<<<<<<<<<<<<
18383  * self.ai = self.decomp[1]
18384  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18385  */
18386  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_decompose_tseries); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18387  __Pyx_GOTREF(__pyx_t_11);
18388  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18389  __Pyx_GOTREF(__pyx_t_6);
18390  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18391  __Pyx_GOTREF(__pyx_t_4);
18392  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18393  __Pyx_GOTREF(__pyx_t_7);
18394  __pyx_t_5 = NULL;
18395  __pyx_t_1 = 0;
18396  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
18397  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
18398  if (likely(__pyx_t_5)) {
18399  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
18400  __Pyx_INCREF(__pyx_t_5);
18401  __Pyx_INCREF(function);
18402  __Pyx_DECREF_SET(__pyx_t_11, function);
18403  __pyx_t_1 = 1;
18404  }
18405  }
18406  __pyx_t_3 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18407  __Pyx_GOTREF(__pyx_t_3);
18408  if (__pyx_t_5) {
18409  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
18410  }
18411  __Pyx_GIVEREF(__pyx_t_6);
18412  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_1, __pyx_t_6);
18413  __Pyx_GIVEREF(__pyx_t_4);
18414  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_1, __pyx_t_4);
18415  __Pyx_GIVEREF(__pyx_t_7);
18416  PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_1, __pyx_t_7);
18417  __pyx_t_6 = 0;
18418  __pyx_t_4 = 0;
18419  __pyx_t_7 = 0;
18420  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18421  __Pyx_GOTREF(__pyx_t_8);
18422  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18423  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18424  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_decomp, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18425  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18426 
18427  /* "WaveTools.pyx":866
18428  * logEvent("WaveTools.py: performing a direct series decomposition")
18429  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18430  * self.ai = self.decomp[1] # <<<<<<<<<<<<<<
18431  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18432  * imax = min(ipeak + Nf/2,len(self.ai))
18433  */
18434  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18435  __Pyx_GOTREF(__pyx_t_8);
18436  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_8, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18437  __Pyx_GOTREF(__pyx_t_11);
18438  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18439  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ai, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18440  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18441 
18442  /* "WaveTools.pyx":867
18443  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18444  * self.ai = self.decomp[1]
18445  * ipeak = np.where(self.ai == max(self.ai))[0][0] # <<<<<<<<<<<<<<
18446  * imax = min(ipeak + Nf/2,len(self.ai))
18447  * imin = max(0,ipeak - Nf/2)
18448  */
18449  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18450  __Pyx_GOTREF(__pyx_t_8);
18451  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18452  __Pyx_GOTREF(__pyx_t_3);
18453  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18454  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18455  __Pyx_GOTREF(__pyx_t_8);
18456  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18457  __Pyx_GOTREF(__pyx_t_7);
18458  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18459  __Pyx_GOTREF(__pyx_t_4);
18460  __Pyx_GIVEREF(__pyx_t_7);
18461  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
18462  __pyx_t_7 = 0;
18463  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18464  __Pyx_GOTREF(__pyx_t_7);
18465  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18466  __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18467  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18468  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18469  __pyx_t_7 = NULL;
18470  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
18471  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
18472  if (likely(__pyx_t_7)) {
18473  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
18474  __Pyx_INCREF(__pyx_t_7);
18475  __Pyx_INCREF(function);
18476  __Pyx_DECREF_SET(__pyx_t_3, function);
18477  }
18478  }
18479  if (!__pyx_t_7) {
18480  __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18481  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18482  __Pyx_GOTREF(__pyx_t_11);
18483  } else {
18484  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18485  __Pyx_GOTREF(__pyx_t_8);
18486  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
18487  __Pyx_GIVEREF(__pyx_t_4);
18488  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
18489  __pyx_t_4 = 0;
18490  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18491  __Pyx_GOTREF(__pyx_t_11);
18492  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18493  }
18494  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18495  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18496  __Pyx_GOTREF(__pyx_t_3);
18497  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18498  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18499  __Pyx_GOTREF(__pyx_t_11);
18500  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18501  __pyx_v_ipeak = __pyx_t_11;
18502  __pyx_t_11 = 0;
18503 
18504  /* "WaveTools.pyx":868
18505  * self.ai = self.decomp[1]
18506  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18507  * imax = min(ipeak + Nf/2,len(self.ai)) # <<<<<<<<<<<<<<
18508  * imin = max(0,ipeak - Nf/2)
18509  * self.ai = self.ai[imin:imax]
18510  */
18511  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18512  __Pyx_GOTREF(__pyx_t_11);
18513  __pyx_t_1 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18514  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18515  __pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_v_Nf, __pyx_int_2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18516  __Pyx_GOTREF(__pyx_t_11);
18517  __pyx_t_3 = PyNumber_Add(__pyx_v_ipeak, __pyx_t_11); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18518  __Pyx_GOTREF(__pyx_t_3);
18519  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18520  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18521  __Pyx_GOTREF(__pyx_t_8);
18522  __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18523  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18524  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18525  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18526  if (__pyx_t_2) {
18527  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18528  __Pyx_GOTREF(__pyx_t_4);
18529  __pyx_t_11 = __pyx_t_4;
18530  __pyx_t_4 = 0;
18531  } else {
18532  __Pyx_INCREF(__pyx_t_3);
18533  __pyx_t_11 = __pyx_t_3;
18534  }
18535  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18536  __pyx_t_3 = __pyx_t_11;
18537  __Pyx_INCREF(__pyx_t_3);
18538  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18539  __pyx_v_imax = __pyx_t_3;
18540  __pyx_t_3 = 0;
18541 
18542  /* "WaveTools.pyx":869
18543  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18544  * imax = min(ipeak + Nf/2,len(self.ai))
18545  * imin = max(0,ipeak - Nf/2) # <<<<<<<<<<<<<<
18546  * self.ai = self.ai[imin:imax]
18547  * self.omega = self.decomp[0][imin:imax]
18548  */
18549  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_Nf, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18550  __Pyx_GOTREF(__pyx_t_3);
18551  __pyx_t_11 = PyNumber_Subtract(__pyx_v_ipeak, __pyx_t_3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18552  __Pyx_GOTREF(__pyx_t_11);
18553  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18554  __pyx_t_12 = 0;
18555  __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18556  __Pyx_GOTREF(__pyx_t_4);
18557  __pyx_t_8 = PyObject_RichCompare(__pyx_t_11, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18558  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18559  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18560  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18561  if (__pyx_t_2) {
18562  __Pyx_INCREF(__pyx_t_11);
18563  __pyx_t_3 = __pyx_t_11;
18564  } else {
18565  __pyx_t_8 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18566  __Pyx_GOTREF(__pyx_t_8);
18567  __pyx_t_3 = __pyx_t_8;
18568  __pyx_t_8 = 0;
18569  }
18570  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18571  __pyx_t_11 = __pyx_t_3;
18572  __Pyx_INCREF(__pyx_t_11);
18573  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18574  __pyx_v_imin = __pyx_t_11;
18575  __pyx_t_11 = 0;
18576 
18577  /* "WaveTools.pyx":870
18578  * imax = min(ipeak + Nf/2,len(self.ai))
18579  * imin = max(0,ipeak - Nf/2)
18580  * self.ai = self.ai[imin:imax] # <<<<<<<<<<<<<<
18581  * self.omega = self.decomp[0][imin:imax]
18582  * self.phi = - self.decomp[2][imin:imax]
18583  */
18584  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18585  __Pyx_GOTREF(__pyx_t_11);
18586  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18587  __Pyx_GOTREF(__pyx_t_3);
18588  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18589  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ai, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18590  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18591 
18592  /* "WaveTools.pyx":871
18593  * imin = max(0,ipeak - Nf/2)
18594  * self.ai = self.ai[imin:imax]
18595  * self.omega = self.decomp[0][imin:imax] # <<<<<<<<<<<<<<
18596  * self.phi = - self.decomp[2][imin:imax]
18597  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18598  */
18599  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18600  __Pyx_GOTREF(__pyx_t_3);
18601  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18602  __Pyx_GOTREF(__pyx_t_11);
18603  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18604  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18605  __Pyx_GOTREF(__pyx_t_3);
18606  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18607  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omega, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18608  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18609 
18610  /* "WaveTools.pyx":872
18611  * self.ai = self.ai[imin:imax]
18612  * self.omega = self.decomp[0][imin:imax]
18613  * self.phi = - self.decomp[2][imin:imax] # <<<<<<<<<<<<<<
18614  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18615  * self.Nf = imax - imin
18616  */
18617  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18618  __Pyx_GOTREF(__pyx_t_3);
18619  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_3, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18620  __Pyx_GOTREF(__pyx_t_11);
18621  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18622  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18623  __Pyx_GOTREF(__pyx_t_3);
18624  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18625  __pyx_t_11 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18626  __Pyx_GOTREF(__pyx_t_11);
18627  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18628  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18629  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18630 
18631  /* "WaveTools.pyx":873
18632  * self.omega = self.decomp[0][imin:imax]
18633  * self.phi = - self.decomp[2][imin:imax]
18634  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
18635  * self.Nf = imax - imin
18636  * self.setup = self.decomp[3]
18637  */
18638  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18639  __Pyx_GOTREF(__pyx_t_11);
18640  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18641  __Pyx_GOTREF(__pyx_t_3);
18642  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18643  __Pyx_GOTREF(__pyx_t_8);
18644  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18645  __Pyx_GOTREF(__pyx_t_4);
18646  __Pyx_GIVEREF(__pyx_t_3);
18647  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
18648  __Pyx_GIVEREF(__pyx_t_8);
18649  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
18650  __pyx_t_3 = 0;
18651  __pyx_t_8 = 0;
18652  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18653  __Pyx_GOTREF(__pyx_t_8);
18654  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18655  __Pyx_GOTREF(__pyx_t_3);
18656  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_g, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18657  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18658  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18659  __Pyx_GOTREF(__pyx_t_3);
18660  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18661  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18662  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18663  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ki, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18664  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18665 
18666  /* "WaveTools.pyx":874
18667  * self.phi = - self.decomp[2][imin:imax]
18668  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18669  * self.Nf = imax - imin # <<<<<<<<<<<<<<
18670  * self.setup = self.decomp[3]
18671  * self.kDir = np.zeros((len(self.ki),3),"d")
18672  */
18673  __pyx_t_3 = PyNumber_Subtract(__pyx_v_imax, __pyx_v_imin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18674  __Pyx_GOTREF(__pyx_t_3);
18675  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nf, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18676  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18677 
18678  /* "WaveTools.pyx":875
18679  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18680  * self.Nf = imax - imin
18681  * self.setup = self.decomp[3] # <<<<<<<<<<<<<<
18682  * self.kDir = np.zeros((len(self.ki),3),"d")
18683  * for ii in range(len(self.ki)):
18684  */
18685  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18686  __Pyx_GOTREF(__pyx_t_3);
18687  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_3, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18688  __Pyx_GOTREF(__pyx_t_8);
18689  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18690  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_setup, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18691  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18692 
18693  /* "WaveTools.pyx":876
18694  * self.Nf = imax - imin
18695  * self.setup = self.decomp[3]
18696  * self.kDir = np.zeros((len(self.ki),3),"d") # <<<<<<<<<<<<<<
18697  * for ii in range(len(self.ki)):
18698  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
18699  */
18700  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18701  __Pyx_GOTREF(__pyx_t_3);
18702  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18703  __Pyx_GOTREF(__pyx_t_4);
18704  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18705  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18706  __Pyx_GOTREF(__pyx_t_3);
18707  __pyx_t_1 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18708  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18709  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18710  __Pyx_GOTREF(__pyx_t_3);
18711  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18712  __Pyx_GOTREF(__pyx_t_11);
18713  __Pyx_GIVEREF(__pyx_t_3);
18714  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3);
18715  __Pyx_INCREF(__pyx_int_3);
18716  __Pyx_GIVEREF(__pyx_int_3);
18717  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_int_3);
18718  __pyx_t_3 = 0;
18719  __pyx_t_3 = NULL;
18720  __pyx_t_1 = 0;
18721  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
18722  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
18723  if (likely(__pyx_t_3)) {
18724  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
18725  __Pyx_INCREF(__pyx_t_3);
18726  __Pyx_INCREF(function);
18727  __Pyx_DECREF_SET(__pyx_t_4, function);
18728  __pyx_t_1 = 1;
18729  }
18730  }
18731  __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18732  __Pyx_GOTREF(__pyx_t_7);
18733  if (__pyx_t_3) {
18734  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
18735  }
18736  __Pyx_GIVEREF(__pyx_t_11);
18737  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_1, __pyx_t_11);
18738  __Pyx_INCREF(__pyx_n_s_d);
18739  __Pyx_GIVEREF(__pyx_n_s_d);
18740  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_1, __pyx_n_s_d);
18741  __pyx_t_11 = 0;
18742  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18743  __Pyx_GOTREF(__pyx_t_8);
18744  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18745  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18746  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDir, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18747  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18748 
18749  /* "WaveTools.pyx":877
18750  * self.setup = self.decomp[3]
18751  * self.kDir = np.zeros((len(self.ki),3),"d")
18752  * for ii in range(len(self.ki)): # <<<<<<<<<<<<<<
18753  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
18754  *
18755  */
18756  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18757  __Pyx_GOTREF(__pyx_t_8);
18758  __pyx_t_1 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18759  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18760  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
18761  __pyx_v_ii = __pyx_t_13;
18762 
18763  /* "WaveTools.pyx":878
18764  * self.kDir = np.zeros((len(self.ki),3),"d")
18765  * for ii in range(len(self.ki)):
18766  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
18767  *
18768  *
18769  */
18770  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18771  __Pyx_GOTREF(__pyx_t_8);
18772  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_ii, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18773  __Pyx_GOTREF(__pyx_t_4);
18774  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18775  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18776  __Pyx_GOTREF(__pyx_t_8);
18777  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_8, 0, 0, NULL, NULL, &__pyx_slice__95, 0, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18778  __Pyx_GOTREF(__pyx_t_7);
18779  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18780  __pyx_t_8 = PyNumber_Multiply(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18781  __Pyx_GOTREF(__pyx_t_8);
18782  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18783  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18784  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18785  __Pyx_GOTREF(__pyx_t_7);
18786  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18787  __Pyx_GOTREF(__pyx_t_4);
18788  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18789  __Pyx_GOTREF(__pyx_t_11);
18790  __Pyx_GIVEREF(__pyx_t_4);
18791  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4);
18792  __Pyx_INCREF(__pyx_slice__96);
18793  __Pyx_GIVEREF(__pyx_slice__96);
18794  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_slice__96);
18795  __pyx_t_4 = 0;
18796  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_11, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18797  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18798  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18799  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18800  }
18801 
18802  /* "WaveTools.pyx":861
18803  *
18804  * # Direct decomposition of the time series for using at reconstruct_direct
18805  * if (self.rec_direct): # <<<<<<<<<<<<<<
18806  * Nf = self.N
18807  * self.nfft=len(self.time)
18808  */
18809  goto __pyx_L13;
18810  }
18811 
18812  /* "WaveTools.pyx":883
18813  * # Spectral windowing
18814  * else:
18815  * if (window_params==None): # <<<<<<<<<<<<<<
18816  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18817  * sys.exit(1)
18818  */
18819  /*else*/ {
18820  __pyx_t_8 = PyObject_RichCompare(__pyx_v_window_params, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18821  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18822  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18823  if (__pyx_t_2) {
18824 
18825  /* "WaveTools.pyx":884
18826  * else:
18827  * if (window_params==None):
18828  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary") # <<<<<<<<<<<<<<
18829  * sys.exit(1)
18830  * try:
18831  */
18832  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18833  __Pyx_GOTREF(__pyx_t_8);
18834  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18835  __Pyx_GOTREF(__pyx_t_11);
18836  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18837  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18838 
18839  /* "WaveTools.pyx":885
18840  * if (window_params==None):
18841  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18842  * sys.exit(1) # <<<<<<<<<<<<<<
18843  * try:
18844  * self.Nwaves = window_params["Nwaves"]
18845  */
18846  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18847  __Pyx_GOTREF(__pyx_t_11);
18848  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18849  __Pyx_GOTREF(__pyx_t_8);
18850  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18851  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18852  __Pyx_GOTREF(__pyx_t_11);
18853  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18854  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18855 
18856  /* "WaveTools.pyx":883
18857  * # Spectral windowing
18858  * else:
18859  * if (window_params==None): # <<<<<<<<<<<<<<
18860  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18861  * sys.exit(1)
18862  */
18863  }
18864 
18865  /* "WaveTools.pyx":886
18866  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18867  * sys.exit(1)
18868  * try: # <<<<<<<<<<<<<<
18869  * self.Nwaves = window_params["Nwaves"]
18870  * except:
18871  */
18872  {
18873  __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
18874  __Pyx_XGOTREF(__pyx_t_14);
18875  __Pyx_XGOTREF(__pyx_t_15);
18876  __Pyx_XGOTREF(__pyx_t_16);
18877  /*try:*/ {
18878 
18879  /* "WaveTools.pyx":887
18880  * sys.exit(1)
18881  * try:
18882  * self.Nwaves = window_params["Nwaves"] # <<<<<<<<<<<<<<
18883  * except:
18884  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
18885  */
18886  __pyx_t_11 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Nwaves); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L17_error;};
18887  __Pyx_GOTREF(__pyx_t_11);
18888  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
18889  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18890 
18891  /* "WaveTools.pyx":886
18892  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18893  * sys.exit(1)
18894  * try: # <<<<<<<<<<<<<<
18895  * self.Nwaves = window_params["Nwaves"]
18896  * except:
18897  */
18898  }
18899  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
18900  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
18901  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
18902  goto __pyx_L24_try_end;
18903  __pyx_L17_error:;
18904  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18905  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
18906  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18907  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
18908  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
18909  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
18910  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
18911 
18912  /* "WaveTools.pyx":888
18913  * try:
18914  * self.Nwaves = window_params["Nwaves"]
18915  * except: # <<<<<<<<<<<<<<
18916  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
18917  * sys.exit(1)
18918  */
18919  /*except:*/ {
18920  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18921  if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_8, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18922  __Pyx_GOTREF(__pyx_t_11);
18923  __Pyx_GOTREF(__pyx_t_8);
18924  __Pyx_GOTREF(__pyx_t_7);
18925 
18926  /* "WaveTools.pyx":889
18927  * self.Nwaves = window_params["Nwaves"]
18928  * except:
18929  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary") # <<<<<<<<<<<<<<
18930  * sys.exit(1)
18931  *
18932  */
18933  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18934  __Pyx_GOTREF(__pyx_t_4);
18935  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18936  __Pyx_GOTREF(__pyx_t_3);
18937  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18938  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18939 
18940  /* "WaveTools.pyx":890
18941  * except:
18942  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
18943  * sys.exit(1) # <<<<<<<<<<<<<<
18944  *
18945  * try:
18946  */
18947  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18948  __Pyx_GOTREF(__pyx_t_3);
18949  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18950  __Pyx_GOTREF(__pyx_t_4);
18951  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18952  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18953  __Pyx_GOTREF(__pyx_t_3);
18954  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18955  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18956  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18957  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18958  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18959  goto __pyx_L18_exception_handled;
18960  }
18961  __pyx_L19_except_error:;
18962 
18963  /* "WaveTools.pyx":886
18964  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18965  * sys.exit(1)
18966  * try: # <<<<<<<<<<<<<<
18967  * self.Nwaves = window_params["Nwaves"]
18968  * except:
18969  */
18970  __Pyx_XGIVEREF(__pyx_t_14);
18971  __Pyx_XGIVEREF(__pyx_t_15);
18972  __Pyx_XGIVEREF(__pyx_t_16);
18973  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
18974  goto __pyx_L1_error;
18975  __pyx_L18_exception_handled:;
18976  __Pyx_XGIVEREF(__pyx_t_14);
18977  __Pyx_XGIVEREF(__pyx_t_15);
18978  __Pyx_XGIVEREF(__pyx_t_16);
18979  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
18980  __pyx_L24_try_end:;
18981  }
18982 
18983  /* "WaveTools.pyx":892
18984  * sys.exit(1)
18985  *
18986  * try: # <<<<<<<<<<<<<<
18987  * self.Tm = window_params["Tm"]
18988  * except:
18989  */
18990  {
18991  __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
18992  __Pyx_XGOTREF(__pyx_t_16);
18993  __Pyx_XGOTREF(__pyx_t_15);
18994  __Pyx_XGOTREF(__pyx_t_14);
18995  /*try:*/ {
18996 
18997  /* "WaveTools.pyx":893
18998  *
18999  * try:
19000  * self.Tm = window_params["Tm"] # <<<<<<<<<<<<<<
19001  * except:
19002  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
19003  */
19004  __pyx_t_7 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Tm); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L27_error;};
19005  __Pyx_GOTREF(__pyx_t_7);
19006  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Tm, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L27_error;}
19007  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19008 
19009  /* "WaveTools.pyx":892
19010  * sys.exit(1)
19011  *
19012  * try: # <<<<<<<<<<<<<<
19013  * self.Tm = window_params["Tm"]
19014  * except:
19015  */
19016  }
19017  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
19018  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
19019  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
19020  goto __pyx_L34_try_end;
19021  __pyx_L27_error:;
19022  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
19023  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19024  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
19025  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19026  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
19027  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19028  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19029 
19030  /* "WaveTools.pyx":894
19031  * try:
19032  * self.Tm = window_params["Tm"]
19033  * except: # <<<<<<<<<<<<<<
19034  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
19035  * sys.exit(1)
19036  */
19037  /*except:*/ {
19038  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19039  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19040  __Pyx_GOTREF(__pyx_t_7);
19041  __Pyx_GOTREF(__pyx_t_8);
19042  __Pyx_GOTREF(__pyx_t_11);
19043 
19044  /* "WaveTools.pyx":895
19045  * self.Tm = window_params["Tm"]
19046  * except:
19047  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary") # <<<<<<<<<<<<<<
19048  * sys.exit(1)
19049  *
19050  */
19051  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19052  __Pyx_GOTREF(__pyx_t_3);
19053  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__101, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19054  __Pyx_GOTREF(__pyx_t_4);
19055  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19056  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19057 
19058  /* "WaveTools.pyx":896
19059  * except:
19060  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
19061  * sys.exit(1) # <<<<<<<<<<<<<<
19062  *
19063  * try:
19064  */
19065  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19066  __Pyx_GOTREF(__pyx_t_4);
19067  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19068  __Pyx_GOTREF(__pyx_t_3);
19069  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19070  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__102, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19071  __Pyx_GOTREF(__pyx_t_4);
19072  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19073  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19074  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19075  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19076  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19077  goto __pyx_L28_exception_handled;
19078  }
19079  __pyx_L29_except_error:;
19080 
19081  /* "WaveTools.pyx":892
19082  * sys.exit(1)
19083  *
19084  * try: # <<<<<<<<<<<<<<
19085  * self.Tm = window_params["Tm"]
19086  * except:
19087  */
19088  __Pyx_XGIVEREF(__pyx_t_16);
19089  __Pyx_XGIVEREF(__pyx_t_15);
19090  __Pyx_XGIVEREF(__pyx_t_14);
19091  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19092  goto __pyx_L1_error;
19093  __pyx_L28_exception_handled:;
19094  __Pyx_XGIVEREF(__pyx_t_16);
19095  __Pyx_XGIVEREF(__pyx_t_15);
19096  __Pyx_XGIVEREF(__pyx_t_14);
19097  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19098  __pyx_L34_try_end:;
19099  }
19100 
19101  /* "WaveTools.pyx":898
19102  * sys.exit(1)
19103  *
19104  * try: # <<<<<<<<<<<<<<
19105  * self.windowName = window_params["Window"]
19106  * except:
19107  */
19108  {
19109  __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
19110  __Pyx_XGOTREF(__pyx_t_14);
19111  __Pyx_XGOTREF(__pyx_t_15);
19112  __Pyx_XGOTREF(__pyx_t_16);
19113  /*try:*/ {
19114 
19115  /* "WaveTools.pyx":899
19116  *
19117  * try:
19118  * self.windowName = window_params["Window"] # <<<<<<<<<<<<<<
19119  * except:
19120  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
19121  */
19122  __pyx_t_11 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Window); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L37_error;};
19123  __Pyx_GOTREF(__pyx_t_11);
19124  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windowName, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L37_error;}
19125  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19126 
19127  /* "WaveTools.pyx":898
19128  * sys.exit(1)
19129  *
19130  * try: # <<<<<<<<<<<<<<
19131  * self.windowName = window_params["Window"]
19132  * except:
19133  */
19134  }
19135  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
19136  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
19137  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
19138  goto __pyx_L44_try_end;
19139  __pyx_L37_error:;
19140  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
19141  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19142  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19143  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
19144  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19145  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19146  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
19147 
19148  /* "WaveTools.pyx":900
19149  * try:
19150  * self.windowName = window_params["Window"]
19151  * except: # <<<<<<<<<<<<<<
19152  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
19153  * sys.exit(1)
19154  */
19155  /*except:*/ {
19156  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19157  if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_8, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19158  __Pyx_GOTREF(__pyx_t_11);
19159  __Pyx_GOTREF(__pyx_t_8);
19160  __Pyx_GOTREF(__pyx_t_7);
19161 
19162  /* "WaveTools.pyx":901
19163  * self.windowName = window_params["Window"]
19164  * except:
19165  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary") # <<<<<<<<<<<<<<
19166  * sys.exit(1)
19167  *
19168  */
19169  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19170  __Pyx_GOTREF(__pyx_t_4);
19171  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19172  __Pyx_GOTREF(__pyx_t_3);
19173  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19174  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19175 
19176  /* "WaveTools.pyx":902
19177  * except:
19178  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
19179  * sys.exit(1) # <<<<<<<<<<<<<<
19180  *
19181  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
19182  */
19183  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19184  __Pyx_GOTREF(__pyx_t_3);
19185  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19186  __Pyx_GOTREF(__pyx_t_4);
19187  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19188  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19189  __Pyx_GOTREF(__pyx_t_3);
19190  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19191  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19192  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19193  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19194  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19195  goto __pyx_L38_exception_handled;
19196  }
19197  __pyx_L39_except_error:;
19198 
19199  /* "WaveTools.pyx":898
19200  * sys.exit(1)
19201  *
19202  * try: # <<<<<<<<<<<<<<
19203  * self.windowName = window_params["Window"]
19204  * except:
19205  */
19206  __Pyx_XGIVEREF(__pyx_t_14);
19207  __Pyx_XGIVEREF(__pyx_t_15);
19208  __Pyx_XGIVEREF(__pyx_t_16);
19209  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19210  goto __pyx_L1_error;
19211  __pyx_L38_exception_handled:;
19212  __Pyx_XGIVEREF(__pyx_t_14);
19213  __Pyx_XGIVEREF(__pyx_t_15);
19214  __Pyx_XGIVEREF(__pyx_t_16);
19215  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19216  __pyx_L44_try_end:;
19217  }
19218 
19219  /* "WaveTools.pyx":904
19220  * sys.exit(1)
19221  *
19222  * if(self.Nwaves > 0.5*self.tlength / self.Tm): # <<<<<<<<<<<<<<
19223  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
19224  * sys.exit(1)
19225  */
19226  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19227  __Pyx_GOTREF(__pyx_t_7);
19228  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19229  __Pyx_GOTREF(__pyx_t_8);
19230  __pyx_t_11 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19231  __Pyx_GOTREF(__pyx_t_11);
19232  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19233  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tm); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19234  __Pyx_GOTREF(__pyx_t_8);
19235  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19236  __Pyx_GOTREF(__pyx_t_3);
19237  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19238  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19239  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19240  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19241  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19242  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19243  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19244  if (__pyx_t_2) {
19245 
19246  /* "WaveTools.pyx":905
19247  *
19248  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
19249  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )") # <<<<<<<<<<<<<<
19250  * sys.exit(1)
19251  *
19252  */
19253  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19254  __Pyx_GOTREF(__pyx_t_8);
19255  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19256  __Pyx_GOTREF(__pyx_t_3);
19257  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19258  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19259 
19260  /* "WaveTools.pyx":906
19261  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
19262  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
19263  * sys.exit(1) # <<<<<<<<<<<<<<
19264  *
19265  *
19266  */
19267  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19268  __Pyx_GOTREF(__pyx_t_3);
19269  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19270  __Pyx_GOTREF(__pyx_t_8);
19271  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19272  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__106, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19273  __Pyx_GOTREF(__pyx_t_3);
19274  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19275  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19276 
19277  /* "WaveTools.pyx":904
19278  * sys.exit(1)
19279  *
19280  * if(self.Nwaves > 0.5*self.tlength / self.Tm): # <<<<<<<<<<<<<<
19281  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
19282  * sys.exit(1)
19283  */
19284  }
19285 
19286  /* "WaveTools.pyx":910
19287  *
19288  *
19289  * validWindows = [costap, tophat] # <<<<<<<<<<<<<<
19290  * wind_filt = loadExistingFunction(self.windowName, validWindows)
19291  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19292  */
19293  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_costap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19294  __Pyx_GOTREF(__pyx_t_3);
19295  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tophat); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19296  __Pyx_GOTREF(__pyx_t_8);
19297  __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19298  __Pyx_GOTREF(__pyx_t_7);
19299  __Pyx_GIVEREF(__pyx_t_3);
19300  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
19301  __Pyx_GIVEREF(__pyx_t_8);
19302  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_8);
19303  __pyx_t_3 = 0;
19304  __pyx_t_8 = 0;
19305  __pyx_v_validWindows = ((PyObject*)__pyx_t_7);
19306  __pyx_t_7 = 0;
19307 
19308  /* "WaveTools.pyx":911
19309  *
19310  * validWindows = [costap, tophat]
19311  * wind_filt = loadExistingFunction(self.windowName, validWindows) # <<<<<<<<<<<<<<
19312  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19313  * # Portion of overlap, compared to window time
19314  */
19315  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19316  __Pyx_GOTREF(__pyx_t_8);
19317  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windowName); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19318  __Pyx_GOTREF(__pyx_t_3);
19319  __pyx_t_11 = NULL;
19320  __pyx_t_1 = 0;
19321  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
19322  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
19323  if (likely(__pyx_t_11)) {
19324  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
19325  __Pyx_INCREF(__pyx_t_11);
19326  __Pyx_INCREF(function);
19327  __Pyx_DECREF_SET(__pyx_t_8, function);
19328  __pyx_t_1 = 1;
19329  }
19330  }
19331  __pyx_t_4 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19332  __Pyx_GOTREF(__pyx_t_4);
19333  if (__pyx_t_11) {
19334  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11); __pyx_t_11 = NULL;
19335  }
19336  __Pyx_GIVEREF(__pyx_t_3);
19337  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_1, __pyx_t_3);
19338  __Pyx_INCREF(__pyx_v_validWindows);
19339  __Pyx_GIVEREF(__pyx_v_validWindows);
19340  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_1, __pyx_v_validWindows);
19341  __pyx_t_3 = 0;
19342  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19343  __Pyx_GOTREF(__pyx_t_7);
19344  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19345  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19346  __pyx_v_wind_filt = __pyx_t_7;
19347  __pyx_t_7 = 0;
19348 
19349  /* "WaveTools.pyx":912
19350  * validWindows = [costap, tophat]
19351  * wind_filt = loadExistingFunction(self.windowName, validWindows)
19352  * logEvent("WaveTools.py: performing series decomposition with spectral windows") # <<<<<<<<<<<<<<
19353  * # Portion of overlap, compared to window time
19354  * try:
19355  */
19356  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19357  __Pyx_GOTREF(__pyx_t_7);
19358  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19359  __Pyx_GOTREF(__pyx_t_8);
19360  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19361  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19362 
19363  /* "WaveTools.pyx":914
19364  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19365  * # Portion of overlap, compared to window time
19366  * try: # <<<<<<<<<<<<<<
19367  * self.overlap = window_params["Overlap"]
19368  * except:
19369  */
19370  {
19371  __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
19372  __Pyx_XGOTREF(__pyx_t_16);
19373  __Pyx_XGOTREF(__pyx_t_15);
19374  __Pyx_XGOTREF(__pyx_t_14);
19375  /*try:*/ {
19376 
19377  /* "WaveTools.pyx":915
19378  * # Portion of overlap, compared to window time
19379  * try:
19380  * self.overlap = window_params["Overlap"] # <<<<<<<<<<<<<<
19381  * except:
19382  * self.overlap = 0.25
19383  */
19384  __pyx_t_8 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Overlap); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L48_error;};
19385  __Pyx_GOTREF(__pyx_t_8);
19386  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_overlap, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L48_error;}
19387  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19388 
19389  /* "WaveTools.pyx":914
19390  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19391  * # Portion of overlap, compared to window time
19392  * try: # <<<<<<<<<<<<<<
19393  * self.overlap = window_params["Overlap"]
19394  * except:
19395  */
19396  }
19397  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
19398  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
19399  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
19400  goto __pyx_L55_try_end;
19401  __pyx_L48_error:;
19402  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
19403  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19404  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
19405  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19406  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
19407  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19408  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19409 
19410  /* "WaveTools.pyx":916
19411  * try:
19412  * self.overlap = window_params["Overlap"]
19413  * except: # <<<<<<<<<<<<<<
19414  * self.overlap = 0.25
19415  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19416  */
19417  /*except:*/ {
19418  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19419  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19420  __Pyx_GOTREF(__pyx_t_8);
19421  __Pyx_GOTREF(__pyx_t_7);
19422  __Pyx_GOTREF(__pyx_t_4);
19423 
19424  /* "WaveTools.pyx":917
19425  * self.overlap = window_params["Overlap"]
19426  * except:
19427  * self.overlap = 0.25 # <<<<<<<<<<<<<<
19428  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19429  *
19430  */
19431  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_overlap, __pyx_float_0_25) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19432 
19433  /* "WaveTools.pyx":918
19434  * except:
19435  * self.overlap = 0.25
19436  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)") # <<<<<<<<<<<<<<
19437  *
19438  * try:
19439  */
19440  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19441  __Pyx_GOTREF(__pyx_t_3);
19442  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19443  __Pyx_GOTREF(__pyx_t_11);
19444  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19445  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19446  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19447  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19448  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19449  goto __pyx_L49_exception_handled;
19450  }
19451  __pyx_L50_except_error:;
19452 
19453  /* "WaveTools.pyx":914
19454  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19455  * # Portion of overlap, compared to window time
19456  * try: # <<<<<<<<<<<<<<
19457  * self.overlap = window_params["Overlap"]
19458  * except:
19459  */
19460  __Pyx_XGIVEREF(__pyx_t_16);
19461  __Pyx_XGIVEREF(__pyx_t_15);
19462  __Pyx_XGIVEREF(__pyx_t_14);
19463  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19464  goto __pyx_L1_error;
19465  __pyx_L49_exception_handled:;
19466  __Pyx_XGIVEREF(__pyx_t_16);
19467  __Pyx_XGIVEREF(__pyx_t_15);
19468  __Pyx_XGIVEREF(__pyx_t_14);
19469  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19470  __pyx_L55_try_end:;
19471  }
19472 
19473  /* "WaveTools.pyx":920
19474  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19475  *
19476  * try: # <<<<<<<<<<<<<<
19477  * self.cutoff = window_params["Cutoff"]
19478  * except:
19479  */
19480  {
19481  __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
19482  __Pyx_XGOTREF(__pyx_t_14);
19483  __Pyx_XGOTREF(__pyx_t_15);
19484  __Pyx_XGOTREF(__pyx_t_16);
19485  /*try:*/ {
19486 
19487  /* "WaveTools.pyx":921
19488  *
19489  * try:
19490  * self.cutoff = window_params["Cutoff"] # <<<<<<<<<<<<<<
19491  * except:
19492  * self.cutoff= 0.1
19493  */
19494  __pyx_t_4 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Cutoff); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L58_error;};
19495  __Pyx_GOTREF(__pyx_t_4);
19496  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cutoff, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L58_error;}
19497  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19498 
19499  /* "WaveTools.pyx":920
19500  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19501  *
19502  * try: # <<<<<<<<<<<<<<
19503  * self.cutoff = window_params["Cutoff"]
19504  * except:
19505  */
19506  }
19507  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
19508  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
19509  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
19510  goto __pyx_L65_try_end;
19511  __pyx_L58_error:;
19512  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
19513  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19514  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19515  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
19516  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19517  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19518  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
19519 
19520  /* "WaveTools.pyx":922
19521  * try:
19522  * self.cutoff = window_params["Cutoff"]
19523  * except: # <<<<<<<<<<<<<<
19524  * self.cutoff= 0.1
19525  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)")
19526  */
19527  /*except:*/ {
19528  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19529  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19530  __Pyx_GOTREF(__pyx_t_4);
19531  __Pyx_GOTREF(__pyx_t_7);
19532  __Pyx_GOTREF(__pyx_t_8);
19533 
19534  /* "WaveTools.pyx":923
19535  * self.cutoff = window_params["Cutoff"]
19536  * except:
19537  * self.cutoff= 0.1 # <<<<<<<<<<<<<<
19538  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)")
19539  *
19540  */
19541  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cutoff, __pyx_float_0_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19542 
19543  /* "WaveTools.pyx":924
19544  * except:
19545  * self.cutoff= 0.1
19546  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)") # <<<<<<<<<<<<<<
19547  *
19548  *
19549  */
19550  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19551  __Pyx_GOTREF(__pyx_t_11);
19552  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19553  __Pyx_GOTREF(__pyx_t_3);
19554  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19555  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19556  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19557  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19558  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19559  goto __pyx_L59_exception_handled;
19560  }
19561  __pyx_L60_except_error:;
19562 
19563  /* "WaveTools.pyx":920
19564  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19565  *
19566  * try: # <<<<<<<<<<<<<<
19567  * self.cutoff = window_params["Cutoff"]
19568  * except:
19569  */
19570  __Pyx_XGIVEREF(__pyx_t_14);
19571  __Pyx_XGIVEREF(__pyx_t_15);
19572  __Pyx_XGIVEREF(__pyx_t_16);
19573  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19574  goto __pyx_L1_error;
19575  __pyx_L59_exception_handled:;
19576  __Pyx_XGIVEREF(__pyx_t_14);
19577  __Pyx_XGIVEREF(__pyx_t_15);
19578  __Pyx_XGIVEREF(__pyx_t_16);
19579  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19580  __pyx_L65_try_end:;
19581  }
19582 
19583  /* "WaveTools.pyx":930
19584  * # Portion of window filtered with the Costap filter
19585  * # Setting the handover time, either at the middle of the overlap or just after the filter
19586  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.) # <<<<<<<<<<<<<<
19587  * if (self.handover > 0.9 * self.overlap):
19588  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19589  */
19590  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19591  __Pyx_GOTREF(__pyx_t_8);
19592  __pyx_t_7 = __Pyx_PyFloat_DivideObjC(__pyx_t_8, __pyx_float_2_, 2., 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19593  __Pyx_GOTREF(__pyx_t_7);
19594  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19595  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19596  __Pyx_GOTREF(__pyx_t_8);
19597  __pyx_t_4 = PyNumber_Multiply(__pyx_float_1_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19598  __Pyx_GOTREF(__pyx_t_4);
19599  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19600  __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19601  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19602  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19603  if (__pyx_t_2) {
19604  __Pyx_INCREF(__pyx_t_7);
19605  __pyx_t_8 = __pyx_t_7;
19606  } else {
19607  __Pyx_INCREF(__pyx_t_4);
19608  __pyx_t_8 = __pyx_t_4;
19609  }
19610  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19611  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19612  __pyx_t_7 = __pyx_t_8;
19613  __Pyx_INCREF(__pyx_t_7);
19614  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19615  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_handover, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19616  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19617 
19618  /* "WaveTools.pyx":931
19619  * # Setting the handover time, either at the middle of the overlap or just after the filter
19620  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
19621  * if (self.handover > 0.9 * self.overlap): # <<<<<<<<<<<<<<
19622  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19623  * sys.exit(1)
19624  */
19625  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19626  __Pyx_GOTREF(__pyx_t_7);
19627  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19628  __Pyx_GOTREF(__pyx_t_8);
19629  __pyx_t_4 = PyNumber_Multiply(__pyx_float_0_9, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19630  __Pyx_GOTREF(__pyx_t_4);
19631  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19632  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19633  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19634  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19635  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19636  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19637  if (__pyx_t_2) {
19638 
19639  /* "WaveTools.pyx":932
19640  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
19641  * if (self.handover > 0.9 * self.overlap):
19642  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap") # <<<<<<<<<<<<<<
19643  * sys.exit(1)
19644  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19645  */
19646  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19647  __Pyx_GOTREF(__pyx_t_8);
19648  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19649  __Pyx_GOTREF(__pyx_t_4);
19650  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19651  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19652 
19653  /* "WaveTools.pyx":933
19654  * if (self.handover > 0.9 * self.overlap):
19655  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19656  * sys.exit(1) # <<<<<<<<<<<<<<
19657  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19658  * self.Toverlap = self.overlap * self.Twindow
19659  */
19660  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19661  __Pyx_GOTREF(__pyx_t_4);
19662  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19663  __Pyx_GOTREF(__pyx_t_8);
19664  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19665  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__111, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19666  __Pyx_GOTREF(__pyx_t_4);
19667  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19668  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19669 
19670  /* "WaveTools.pyx":931
19671  * # Setting the handover time, either at the middle of the overlap or just after the filter
19672  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
19673  * if (self.handover > 0.9 * self.overlap): # <<<<<<<<<<<<<<
19674  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19675  * sys.exit(1)
19676  */
19677  }
19678 
19679  /* "WaveTools.pyx":934
19680  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19681  * sys.exit(1)
19682  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves # <<<<<<<<<<<<<<
19683  * self.Toverlap = self.overlap * self.Twindow
19684  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19685  */
19686  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tm); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19687  __Pyx_GOTREF(__pyx_t_4);
19688  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19689  __Pyx_GOTREF(__pyx_t_8);
19690  __pyx_t_7 = PyNumber_Multiply(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19691  __Pyx_GOTREF(__pyx_t_7);
19692  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19693  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19694  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Twindow, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19695  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19696 
19697  /* "WaveTools.pyx":935
19698  * sys.exit(1)
19699  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19700  * self.Toverlap = self.overlap * self.Twindow # <<<<<<<<<<<<<<
19701  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19702  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19703  */
19704  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19705  __Pyx_GOTREF(__pyx_t_7);
19706  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19707  __Pyx_GOTREF(__pyx_t_8);
19708  __pyx_t_4 = PyNumber_Multiply(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19709  __Pyx_GOTREF(__pyx_t_4);
19710  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19711  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19712  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19713  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19714 
19715  /* "WaveTools.pyx":936
19716  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19717  * self.Toverlap = self.overlap * self.Twindow
19718  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time # <<<<<<<<<<<<<<
19719  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19720  * self.Toverlap = self.overlap*self.Twindow
19721  */
19722  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19723  __Pyx_GOTREF(__pyx_t_4);
19724  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19725  __Pyx_GOTREF(__pyx_t_8);
19726  __pyx_t_7 = PyNumber_Subtract(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19727  __Pyx_GOTREF(__pyx_t_7);
19728  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19729  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19730  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19731  __Pyx_GOTREF(__pyx_t_8);
19732  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19733  __Pyx_GOTREF(__pyx_t_4);
19734  __pyx_t_3 = PyNumber_Subtract(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19735  __Pyx_GOTREF(__pyx_t_3);
19736  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19737  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19738  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19739  __Pyx_GOTREF(__pyx_t_4);
19740  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19741  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19742  __pyx_t_3 = PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19743  __Pyx_GOTREF(__pyx_t_3);
19744  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19745  __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19746  __Pyx_GOTREF(__pyx_t_4);
19747  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19748  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19749  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19750 
19751  /* "WaveTools.pyx":937
19752  * self.Toverlap = self.overlap * self.Twindow
19753  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19754  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows # <<<<<<<<<<<<<<
19755  * self.Toverlap = self.overlap*self.Twindow
19756  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19757  */
19758  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19759  __Pyx_GOTREF(__pyx_t_4);
19760  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19761  __Pyx_GOTREF(__pyx_t_3);
19762  __pyx_t_7 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19763  __Pyx_GOTREF(__pyx_t_7);
19764  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19765  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19766  __Pyx_GOTREF(__pyx_t_3);
19767  __pyx_t_8 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19768  __Pyx_GOTREF(__pyx_t_8);
19769  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19770  __pyx_t_3 = PyNumber_Multiply(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19771  __Pyx_GOTREF(__pyx_t_3);
19772  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19773  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19774  __pyx_t_8 = __Pyx_PyFloat_AddCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19775  __Pyx_GOTREF(__pyx_t_8);
19776  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19777  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19778  __Pyx_GOTREF(__pyx_t_3);
19779  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19780  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19781  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Twindow, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19782  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19783 
19784  /* "WaveTools.pyx":938
19785  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19786  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19787  * self.Toverlap = self.overlap*self.Twindow # <<<<<<<<<<<<<<
19788  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19789  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19790  */
19791  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19792  __Pyx_GOTREF(__pyx_t_3);
19793  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19794  __Pyx_GOTREF(__pyx_t_8);
19795  __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19796  __Pyx_GOTREF(__pyx_t_4);
19797  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19798  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19799  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19800  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19801 
19802  /* "WaveTools.pyx":939
19803  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19804  * self.Toverlap = self.overlap*self.Twindow
19805  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) ) # <<<<<<<<<<<<<<
19806  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19807  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
19808  */
19809  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19810  __Pyx_GOTREF(__pyx_t_8);
19811  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19812  __Pyx_GOTREF(__pyx_t_3);
19813  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tm); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19814  __Pyx_GOTREF(__pyx_t_7);
19815  __pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19816  __Pyx_GOTREF(__pyx_t_11);
19817  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19818  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19819  __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Correcting_window_d, __pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19820  __Pyx_GOTREF(__pyx_t_7);
19821  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19822  __pyx_t_11 = NULL;
19823  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
19824  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
19825  if (likely(__pyx_t_11)) {
19826  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
19827  __Pyx_INCREF(__pyx_t_11);
19828  __Pyx_INCREF(function);
19829  __Pyx_DECREF_SET(__pyx_t_8, function);
19830  }
19831  }
19832  if (!__pyx_t_11) {
19833  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19834  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19835  __Pyx_GOTREF(__pyx_t_4);
19836  } else {
19837  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19838  __Pyx_GOTREF(__pyx_t_3);
19839  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); __pyx_t_11 = NULL;
19840  __Pyx_GIVEREF(__pyx_t_7);
19841  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_7);
19842  __pyx_t_7 = 0;
19843  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19844  __Pyx_GOTREF(__pyx_t_4);
19845  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19846  }
19847  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19848  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19849 
19850  /* "WaveTools.pyx":940
19851  * self.Toverlap = self.overlap*self.Twindow
19852  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19853  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength # <<<<<<<<<<<<<<
19854  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
19855  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
19856  */
19857  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19858  __Pyx_GOTREF(__pyx_t_4);
19859  __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_4, __pyx_float_1_, 1., 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19860  __Pyx_GOTREF(__pyx_t_8);
19861  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19862  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19863  __Pyx_GOTREF(__pyx_t_4);
19864  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19865  __Pyx_GOTREF(__pyx_t_3);
19866  __pyx_t_7 = PyNumber_Subtract(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19867  __Pyx_GOTREF(__pyx_t_7);
19868  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19869  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19870  __pyx_t_3 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19871  __Pyx_GOTREF(__pyx_t_3);
19872  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19873  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19874  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19875  __Pyx_GOTREF(__pyx_t_7);
19876  __pyx_t_8 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19877  __Pyx_GOTREF(__pyx_t_8);
19878  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19879  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19880  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19881  __Pyx_GOTREF(__pyx_t_7);
19882  __pyx_t_3 = PyNumber_Subtract(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19883  __Pyx_GOTREF(__pyx_t_3);
19884  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19885  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19886  __pyx_v_diff = __pyx_t_3;
19887  __pyx_t_3 = 0;
19888 
19889  /* "WaveTools.pyx":941
19890  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19891  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19892  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) ) # <<<<<<<<<<<<<<
19893  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
19894  * # Setting where each window starts and ends
19895  */
19896  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19897  __Pyx_GOTREF(__pyx_t_7);
19898  __pyx_t_8 = PyNumber_Multiply(__pyx_int_100, __pyx_v_diff); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19899  __Pyx_GOTREF(__pyx_t_8);
19900  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Checking_duration_o, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19901  __Pyx_GOTREF(__pyx_t_4);
19902  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19903  __pyx_t_8 = NULL;
19904  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
19905  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
19906  if (likely(__pyx_t_8)) {
19907  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
19908  __Pyx_INCREF(__pyx_t_8);
19909  __Pyx_INCREF(function);
19910  __Pyx_DECREF_SET(__pyx_t_7, function);
19911  }
19912  }
19913  if (!__pyx_t_8) {
19914  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19915  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19916  __Pyx_GOTREF(__pyx_t_3);
19917  } else {
19918  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19919  __Pyx_GOTREF(__pyx_t_11);
19920  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
19921  __Pyx_GIVEREF(__pyx_t_4);
19922  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4);
19923  __pyx_t_4 = 0;
19924  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19925  __Pyx_GOTREF(__pyx_t_3);
19926  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19927  }
19928  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19929  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19930 
19931  /* "WaveTools.pyx":942
19932  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19933  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
19934  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap )) # <<<<<<<<<<<<<<
19935  * # Setting where each window starts and ends
19936  * for jj in range(self.Nwindows):
19937  */
19938  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19939  __Pyx_GOTREF(__pyx_t_7);
19940  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19941  __Pyx_GOTREF(__pyx_t_11);
19942  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19943  __Pyx_GOTREF(__pyx_t_4);
19944  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19945  __Pyx_GOTREF(__pyx_t_8);
19946  __pyx_t_6 = PyNumber_Multiply(__pyx_int_100, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19947  __Pyx_GOTREF(__pyx_t_6);
19948  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19949  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19950  __Pyx_GOTREF(__pyx_t_8);
19951  __Pyx_GIVEREF(__pyx_t_11);
19952  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);
19953  __Pyx_GIVEREF(__pyx_t_4);
19954  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_4);
19955  __Pyx_GIVEREF(__pyx_t_6);
19956  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_6);
19957  __pyx_t_11 = 0;
19958  __pyx_t_4 = 0;
19959  __pyx_t_6 = 0;
19960  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Using_s_windows_for, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19961  __Pyx_GOTREF(__pyx_t_6);
19962  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19963  __pyx_t_8 = NULL;
19964  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
19965  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
19966  if (likely(__pyx_t_8)) {
19967  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
19968  __Pyx_INCREF(__pyx_t_8);
19969  __Pyx_INCREF(function);
19970  __Pyx_DECREF_SET(__pyx_t_7, function);
19971  }
19972  }
19973  if (!__pyx_t_8) {
19974  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19975  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
19976  __Pyx_GOTREF(__pyx_t_3);
19977  } else {
19978  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19979  __Pyx_GOTREF(__pyx_t_4);
19980  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL;
19981  __Pyx_GIVEREF(__pyx_t_6);
19982  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
19983  __pyx_t_6 = 0;
19984  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19985  __Pyx_GOTREF(__pyx_t_3);
19986  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19987  }
19988  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19989  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19990 
19991  /* "WaveTools.pyx":944
19992  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
19993  * # Setting where each window starts and ends
19994  * for jj in range(self.Nwindows): # <<<<<<<<<<<<<<
19995  * span = np.zeros(2,"d")
19996  * tfirst = self.time[0] + self.Twindow
19997  */
19998  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19999  __Pyx_GOTREF(__pyx_t_3);
20000  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20001  __Pyx_GOTREF(__pyx_t_7);
20002  __Pyx_GIVEREF(__pyx_t_3);
20003  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
20004  __pyx_t_3 = 0;
20005  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20006  __Pyx_GOTREF(__pyx_t_3);
20007  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20008  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
20009  __pyx_t_7 = __pyx_t_3; __Pyx_INCREF(__pyx_t_7); __pyx_t_1 = 0;
20010  __pyx_t_10 = NULL;
20011  } else {
20012  __pyx_t_1 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20013  __Pyx_GOTREF(__pyx_t_7);
20014  __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20015  }
20016  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20017  for (;;) {
20018  if (likely(!__pyx_t_10)) {
20019  if (likely(PyList_CheckExact(__pyx_t_7))) {
20020  if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_7)) break;
20021  #if CYTHON_COMPILING_IN_CPYTHON
20022  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20023  #else
20024  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20025  __Pyx_GOTREF(__pyx_t_3);
20026  #endif
20027  } else {
20028  if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
20029  #if CYTHON_COMPILING_IN_CPYTHON
20030  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20031  #else
20032  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20033  __Pyx_GOTREF(__pyx_t_3);
20034  #endif
20035  }
20036  } else {
20037  __pyx_t_3 = __pyx_t_10(__pyx_t_7);
20038  if (unlikely(!__pyx_t_3)) {
20039  PyObject* exc_type = PyErr_Occurred();
20040  if (exc_type) {
20041  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
20042  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20043  }
20044  break;
20045  }
20046  __Pyx_GOTREF(__pyx_t_3);
20047  }
20048  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_3);
20049  __pyx_t_3 = 0;
20050 
20051  /* "WaveTools.pyx":945
20052  * # Setting where each window starts and ends
20053  * for jj in range(self.Nwindows):
20054  * span = np.zeros(2,"d") # <<<<<<<<<<<<<<
20055  * tfirst = self.time[0] + self.Twindow
20056  * tlast = self.time[-1] - self.Twindow
20057  */
20058  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20059  __Pyx_GOTREF(__pyx_t_3);
20060  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20061  __Pyx_GOTREF(__pyx_t_4);
20062  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20063  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20064  __Pyx_GOTREF(__pyx_t_3);
20065  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20066  __Pyx_XDECREF_SET(__pyx_v_span, __pyx_t_3);
20067  __pyx_t_3 = 0;
20068 
20069  /* "WaveTools.pyx":946
20070  * for jj in range(self.Nwindows):
20071  * span = np.zeros(2,"d")
20072  * tfirst = self.time[0] + self.Twindow # <<<<<<<<<<<<<<
20073  * tlast = self.time[-1] - self.Twindow
20074  * if jj == 0:
20075  */
20076  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20077  __Pyx_GOTREF(__pyx_t_3);
20078  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20079  __Pyx_GOTREF(__pyx_t_4);
20080  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20081  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20082  __Pyx_GOTREF(__pyx_t_3);
20083  __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20084  __Pyx_GOTREF(__pyx_t_6);
20085  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20086  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20087  __Pyx_XDECREF_SET(__pyx_v_tfirst, __pyx_t_6);
20088  __pyx_t_6 = 0;
20089 
20090  /* "WaveTools.pyx":947
20091  * span = np.zeros(2,"d")
20092  * tfirst = self.time[0] + self.Twindow
20093  * tlast = self.time[-1] - self.Twindow # <<<<<<<<<<<<<<
20094  * if jj == 0:
20095  * ispan1 = 0
20096  */
20097  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20098  __Pyx_GOTREF(__pyx_t_6);
20099  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20100  __Pyx_GOTREF(__pyx_t_3);
20101  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20102  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20103  __Pyx_GOTREF(__pyx_t_6);
20104  __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20105  __Pyx_GOTREF(__pyx_t_4);
20106  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20107  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20108  __Pyx_XDECREF_SET(__pyx_v_tlast, __pyx_t_4);
20109  __pyx_t_4 = 0;
20110 
20111  /* "WaveTools.pyx":948
20112  * tfirst = self.time[0] + self.Twindow
20113  * tlast = self.time[-1] - self.Twindow
20114  * if jj == 0: # <<<<<<<<<<<<<<
20115  * ispan1 = 0
20116  * ispan2 = np.where(self.time> tfirst)[0][0]
20117  */
20118  __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_v_jj, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20119  __Pyx_GOTREF(__pyx_t_4);
20120  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20121  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20122  if (__pyx_t_2) {
20123 
20124  /* "WaveTools.pyx":949
20125  * tlast = self.time[-1] - self.Twindow
20126  * if jj == 0:
20127  * ispan1 = 0 # <<<<<<<<<<<<<<
20128  * ispan2 = np.where(self.time> tfirst)[0][0]
20129  * elif jj == self.Nwindows-1:
20130  */
20131  __Pyx_INCREF(__pyx_int_0);
20132  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_int_0);
20133 
20134  /* "WaveTools.pyx":950
20135  * if jj == 0:
20136  * ispan1 = 0
20137  * ispan2 = np.where(self.time> tfirst)[0][0] # <<<<<<<<<<<<<<
20138  * elif jj == self.Nwindows-1:
20139  * ispan1 = np.where(self.time > tlast)[0][0]
20140  */
20141  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20142  __Pyx_GOTREF(__pyx_t_6);
20143  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20144  __Pyx_GOTREF(__pyx_t_3);
20145  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20146  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20147  __Pyx_GOTREF(__pyx_t_6);
20148  __pyx_t_8 = PyObject_RichCompare(__pyx_t_6, __pyx_v_tfirst, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20149  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20150  __pyx_t_6 = NULL;
20151  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
20152  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
20153  if (likely(__pyx_t_6)) {
20154  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20155  __Pyx_INCREF(__pyx_t_6);
20156  __Pyx_INCREF(function);
20157  __Pyx_DECREF_SET(__pyx_t_3, function);
20158  }
20159  }
20160  if (!__pyx_t_6) {
20161  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20162  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20163  __Pyx_GOTREF(__pyx_t_4);
20164  } else {
20165  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20166  __Pyx_GOTREF(__pyx_t_11);
20167  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __pyx_t_6 = NULL;
20168  __Pyx_GIVEREF(__pyx_t_8);
20169  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_8);
20170  __pyx_t_8 = 0;
20171  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20172  __Pyx_GOTREF(__pyx_t_4);
20173  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20174  }
20175  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20176  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20177  __Pyx_GOTREF(__pyx_t_3);
20178  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20179  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20180  __Pyx_GOTREF(__pyx_t_4);
20181  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20182  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_4);
20183  __pyx_t_4 = 0;
20184 
20185  /* "WaveTools.pyx":948
20186  * tfirst = self.time[0] + self.Twindow
20187  * tlast = self.time[-1] - self.Twindow
20188  * if jj == 0: # <<<<<<<<<<<<<<
20189  * ispan1 = 0
20190  * ispan2 = np.where(self.time> tfirst)[0][0]
20191  */
20192  goto __pyx_L71;
20193  }
20194 
20195  /* "WaveTools.pyx":951
20196  * ispan1 = 0
20197  * ispan2 = np.where(self.time> tfirst)[0][0]
20198  * elif jj == self.Nwindows-1: # <<<<<<<<<<<<<<
20199  * ispan1 = np.where(self.time > tlast)[0][0]
20200  * ispan2 = len(self.time)-1
20201  */
20202  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20203  __Pyx_GOTREF(__pyx_t_4);
20204  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20205  __Pyx_GOTREF(__pyx_t_3);
20206  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20207  __pyx_t_4 = PyObject_RichCompare(__pyx_v_jj, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20208  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20209  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20210  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20211  if (__pyx_t_2) {
20212 
20213  /* "WaveTools.pyx":952
20214  * ispan2 = np.where(self.time> tfirst)[0][0]
20215  * elif jj == self.Nwindows-1:
20216  * ispan1 = np.where(self.time > tlast)[0][0] # <<<<<<<<<<<<<<
20217  * ispan2 = len(self.time)-1
20218  * else:
20219  */
20220  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20221  __Pyx_GOTREF(__pyx_t_3);
20222  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_where); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20223  __Pyx_GOTREF(__pyx_t_11);
20224  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20225  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20226  __Pyx_GOTREF(__pyx_t_3);
20227  __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_v_tlast, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20228  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20229  __pyx_t_3 = NULL;
20230  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
20231  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
20232  if (likely(__pyx_t_3)) {
20233  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
20234  __Pyx_INCREF(__pyx_t_3);
20235  __Pyx_INCREF(function);
20236  __Pyx_DECREF_SET(__pyx_t_11, function);
20237  }
20238  }
20239  if (!__pyx_t_3) {
20240  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20241  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20242  __Pyx_GOTREF(__pyx_t_4);
20243  } else {
20244  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20245  __Pyx_GOTREF(__pyx_t_6);
20246  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
20247  __Pyx_GIVEREF(__pyx_t_8);
20248  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_8);
20249  __pyx_t_8 = 0;
20250  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20251  __Pyx_GOTREF(__pyx_t_4);
20252  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20253  }
20254  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20255  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20256  __Pyx_GOTREF(__pyx_t_11);
20257  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20258  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20259  __Pyx_GOTREF(__pyx_t_4);
20260  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20261  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_t_4);
20262  __pyx_t_4 = 0;
20263 
20264  /* "WaveTools.pyx":953
20265  * elif jj == self.Nwindows-1:
20266  * ispan1 = np.where(self.time > tlast)[0][0]
20267  * ispan2 = len(self.time)-1 # <<<<<<<<<<<<<<
20268  * else:
20269  * tstart = self.time[ispan2] - self.Toverlap
20270  */
20271  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20272  __Pyx_GOTREF(__pyx_t_4);
20273  __pyx_t_13 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20274  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20275  __pyx_t_4 = PyInt_FromSsize_t((__pyx_t_13 - 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20276  __Pyx_GOTREF(__pyx_t_4);
20277  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_4);
20278  __pyx_t_4 = 0;
20279 
20280  /* "WaveTools.pyx":951
20281  * ispan1 = 0
20282  * ispan2 = np.where(self.time> tfirst)[0][0]
20283  * elif jj == self.Nwindows-1: # <<<<<<<<<<<<<<
20284  * ispan1 = np.where(self.time > tlast)[0][0]
20285  * ispan2 = len(self.time)-1
20286  */
20287  goto __pyx_L71;
20288  }
20289 
20290  /* "WaveTools.pyx":955
20291  * ispan2 = len(self.time)-1
20292  * else:
20293  * tstart = self.time[ispan2] - self.Toverlap # <<<<<<<<<<<<<<
20294  * ispan1 = np.where(self.time > tstart)[0][0]
20295  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20296  */
20297  /*else*/ {
20298  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20299  __Pyx_GOTREF(__pyx_t_4);
20300  if (unlikely(!__pyx_v_ispan2)) { __Pyx_RaiseUnboundLocalError("ispan2"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
20301  __pyx_t_11 = PyObject_GetItem(__pyx_t_4, __pyx_v_ispan2); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20302  __Pyx_GOTREF(__pyx_t_11);
20303  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20304  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20305  __Pyx_GOTREF(__pyx_t_4);
20306  __pyx_t_6 = PyNumber_Subtract(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20307  __Pyx_GOTREF(__pyx_t_6);
20308  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20309  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20310  __Pyx_XDECREF_SET(__pyx_v_tstart, __pyx_t_6);
20311  __pyx_t_6 = 0;
20312 
20313  /* "WaveTools.pyx":956
20314  * else:
20315  * tstart = self.time[ispan2] - self.Toverlap
20316  * ispan1 = np.where(self.time > tstart)[0][0] # <<<<<<<<<<<<<<
20317  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20318  * span[0] = ispan1
20319  */
20320  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20321  __Pyx_GOTREF(__pyx_t_4);
20322  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_where); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20323  __Pyx_GOTREF(__pyx_t_11);
20324  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20325  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20326  __Pyx_GOTREF(__pyx_t_4);
20327  __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_v_tstart, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20328  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20329  __pyx_t_4 = NULL;
20330  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
20331  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
20332  if (likely(__pyx_t_4)) {
20333  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
20334  __Pyx_INCREF(__pyx_t_4);
20335  __Pyx_INCREF(function);
20336  __Pyx_DECREF_SET(__pyx_t_11, function);
20337  }
20338  }
20339  if (!__pyx_t_4) {
20340  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20341  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20342  __Pyx_GOTREF(__pyx_t_6);
20343  } else {
20344  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20345  __Pyx_GOTREF(__pyx_t_3);
20346  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
20347  __Pyx_GIVEREF(__pyx_t_8);
20348  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_8);
20349  __pyx_t_8 = 0;
20350  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20351  __Pyx_GOTREF(__pyx_t_6);
20352  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20353  }
20354  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20355  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20356  __Pyx_GOTREF(__pyx_t_11);
20357  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20358  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20359  __Pyx_GOTREF(__pyx_t_6);
20360  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20361  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_t_6);
20362  __pyx_t_6 = 0;
20363 
20364  /* "WaveTools.pyx":957
20365  * tstart = self.time[ispan2] - self.Toverlap
20366  * ispan1 = np.where(self.time > tstart)[0][0]
20367  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0] # <<<<<<<<<<<<<<
20368  * span[0] = ispan1
20369  * span[1] = ispan2
20370  */
20371  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20372  __Pyx_GOTREF(__pyx_t_11);
20373  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20374  __Pyx_GOTREF(__pyx_t_3);
20375  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20376  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20377  __Pyx_GOTREF(__pyx_t_11);
20378  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20379  __Pyx_GOTREF(__pyx_t_8);
20380  __pyx_t_4 = PyNumber_Add(__pyx_v_tstart, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20381  __Pyx_GOTREF(__pyx_t_4);
20382  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20383  __pyx_t_8 = PyObject_RichCompare(__pyx_t_11, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20384  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20385  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20386  __pyx_t_4 = NULL;
20387  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
20388  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
20389  if (likely(__pyx_t_4)) {
20390  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20391  __Pyx_INCREF(__pyx_t_4);
20392  __Pyx_INCREF(function);
20393  __Pyx_DECREF_SET(__pyx_t_3, function);
20394  }
20395  }
20396  if (!__pyx_t_4) {
20397  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20398  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20399  __Pyx_GOTREF(__pyx_t_6);
20400  } else {
20401  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20402  __Pyx_GOTREF(__pyx_t_11);
20403  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL;
20404  __Pyx_GIVEREF(__pyx_t_8);
20405  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_8);
20406  __pyx_t_8 = 0;
20407  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20408  __Pyx_GOTREF(__pyx_t_6);
20409  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20410  }
20411  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20412  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20413  __Pyx_GOTREF(__pyx_t_3);
20414  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20415  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20416  __Pyx_GOTREF(__pyx_t_6);
20417  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20418  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_6);
20419  __pyx_t_6 = 0;
20420  }
20421  __pyx_L71:;
20422 
20423  /* "WaveTools.pyx":958
20424  * ispan1 = np.where(self.time > tstart)[0][0]
20425  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20426  * span[0] = ispan1 # <<<<<<<<<<<<<<
20427  * span[1] = ispan2
20428  * # Storing time series in windows and handover times
20429  */
20430  if (unlikely(__Pyx_SetItemInt(__pyx_v_span, 0, __pyx_v_ispan1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20431 
20432  /* "WaveTools.pyx":959
20433  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20434  * span[0] = ispan1
20435  * span[1] = ispan2 # <<<<<<<<<<<<<<
20436  * # Storing time series in windows and handover times
20437  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow )
20438  */
20439  if (unlikely(__Pyx_SetItemInt(__pyx_v_span, 1, __pyx_v_ispan2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20440 
20441  /* "WaveTools.pyx":961
20442  * span[1] = ispan2
20443  * # Storing time series in windows and handover times
20444  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow ) # <<<<<<<<<<<<<<
20445  * self.windows_rec.append(np.array(zip(self.time[ispan1:ispan2],self.eta[ispan1:ispan2])))
20446  * # Decomposing windows to frequency domain
20447  */
20448  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_handover); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20449  __Pyx_GOTREF(__pyx_t_6);
20450  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20451  __Pyx_GOTREF(__pyx_t_3);
20452  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_v_ispan2); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20453  __Pyx_GOTREF(__pyx_t_11);
20454  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20455  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20456  __Pyx_GOTREF(__pyx_t_3);
20457  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20458  __Pyx_GOTREF(__pyx_t_8);
20459  __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20460  __Pyx_GOTREF(__pyx_t_4);
20461  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20462  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20463  __pyx_t_8 = PyNumber_Subtract(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20464  __Pyx_GOTREF(__pyx_t_8);
20465  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20466  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20467  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_t_6, __pyx_t_8); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20468  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20469  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20470 
20471  /* "WaveTools.pyx":962
20472  * # Storing time series in windows and handover times
20473  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow )
20474  * self.windows_rec.append(np.array(zip(self.time[ispan1:ispan2],self.eta[ispan1:ispan2]))) # <<<<<<<<<<<<<<
20475  * # Decomposing windows to frequency domain
20476  * self.decompose_window = []
20477  */
20478  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20479  __Pyx_GOTREF(__pyx_t_8);
20480  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20481  __Pyx_GOTREF(__pyx_t_4);
20482  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20483  __Pyx_GOTREF(__pyx_t_11);
20484  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20485  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20486  __Pyx_GOTREF(__pyx_t_4);
20487  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 0, &__pyx_v_ispan1, &__pyx_v_ispan2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20488  __Pyx_GOTREF(__pyx_t_3);
20489  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20490  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20491  __Pyx_GOTREF(__pyx_t_4);
20492  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 0, &__pyx_v_ispan1, &__pyx_v_ispan2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20493  __Pyx_GOTREF(__pyx_t_5);
20494  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20495  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20496  __Pyx_GOTREF(__pyx_t_4);
20497  __Pyx_GIVEREF(__pyx_t_3);
20498  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
20499  __Pyx_GIVEREF(__pyx_t_5);
20500  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
20501  __pyx_t_3 = 0;
20502  __pyx_t_5 = 0;
20503  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20504  __Pyx_GOTREF(__pyx_t_5);
20505  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20506  __pyx_t_4 = NULL;
20507  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
20508  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
20509  if (likely(__pyx_t_4)) {
20510  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
20511  __Pyx_INCREF(__pyx_t_4);
20512  __Pyx_INCREF(function);
20513  __Pyx_DECREF_SET(__pyx_t_11, function);
20514  }
20515  }
20516  if (!__pyx_t_4) {
20517  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20518  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20519  __Pyx_GOTREF(__pyx_t_6);
20520  } else {
20521  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20522  __Pyx_GOTREF(__pyx_t_3);
20523  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
20524  __Pyx_GIVEREF(__pyx_t_5);
20525  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
20526  __pyx_t_5 = 0;
20527  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20528  __Pyx_GOTREF(__pyx_t_6);
20529  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20530  }
20531  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20532  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20533  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20534  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20535 
20536  /* "WaveTools.pyx":944
20537  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
20538  * # Setting where each window starts and ends
20539  * for jj in range(self.Nwindows): # <<<<<<<<<<<<<<
20540  * span = np.zeros(2,"d")
20541  * tfirst = self.time[0] + self.Twindow
20542  */
20543  }
20544  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20545 
20546  /* "WaveTools.pyx":964
20547  * self.windows_rec.append(np.array(zip(self.time[ispan1:ispan2],self.eta[ispan1:ispan2])))
20548  * # Decomposing windows to frequency domain
20549  * self.decompose_window = [] # <<<<<<<<<<<<<<
20550  * # style = "k-"
20551  * # ii = 0
20552  */
20553  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20554  __Pyx_GOTREF(__pyx_t_7);
20555  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20556  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20557 
20558  /* "WaveTools.pyx":968
20559  * # ii = 0
20560  *
20561  * for wind in self.windows_rec: # <<<<<<<<<<<<<<
20562  * self.nfft=len(wind[:,0])
20563  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20564  */
20565  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20566  __Pyx_GOTREF(__pyx_t_7);
20567  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
20568  __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0;
20569  __pyx_t_10 = NULL;
20570  } else {
20571  __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20572  __Pyx_GOTREF(__pyx_t_6);
20573  __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20574  }
20575  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20576  for (;;) {
20577  if (likely(!__pyx_t_10)) {
20578  if (likely(PyList_CheckExact(__pyx_t_6))) {
20579  if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_6)) break;
20580  #if CYTHON_COMPILING_IN_CPYTHON
20581  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_7); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20582  #else
20583  __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20584  __Pyx_GOTREF(__pyx_t_7);
20585  #endif
20586  } else {
20587  if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
20588  #if CYTHON_COMPILING_IN_CPYTHON
20589  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_7); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20590  #else
20591  __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20592  __Pyx_GOTREF(__pyx_t_7);
20593  #endif
20594  }
20595  } else {
20596  __pyx_t_7 = __pyx_t_10(__pyx_t_6);
20597  if (unlikely(!__pyx_t_7)) {
20598  PyObject* exc_type = PyErr_Occurred();
20599  if (exc_type) {
20600  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
20601  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20602  }
20603  break;
20604  }
20605  __Pyx_GOTREF(__pyx_t_7);
20606  }
20607  __Pyx_XDECREF_SET(__pyx_v_wind, __pyx_t_7);
20608  __pyx_t_7 = 0;
20609 
20610  /* "WaveTools.pyx":969
20611  *
20612  * for wind in self.windows_rec:
20613  * self.nfft=len(wind[:,0]) # <<<<<<<<<<<<<<
20614  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20615  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20616  */
20617  __pyx_t_7 = PyObject_GetItem(__pyx_v_wind, __pyx_tuple__114); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20618  __Pyx_GOTREF(__pyx_t_7);
20619  __pyx_t_13 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20620  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20621  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20622  __Pyx_GOTREF(__pyx_t_7);
20623  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_nfft, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20624  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20625 
20626  /* "WaveTools.pyx":970
20627  * for wind in self.windows_rec:
20628  * self.nfft=len(wind[:,0])
20629  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff) # <<<<<<<<<<<<<<
20630  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20631  * self.N = min(self.N, len(decomp[0]))
20632  */
20633  __Pyx_INCREF(__pyx_tuple__116);
20634  __pyx_t_18 = __pyx_tuple__116;
20635  __pyx_t_7 = PyObject_GetItem(__pyx_v_wind, __pyx_t_18); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20636  __Pyx_GOTREF(__pyx_t_7);
20637  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_nfft); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20638  __Pyx_GOTREF(__pyx_t_8);
20639  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20640  __Pyx_GOTREF(__pyx_t_11);
20641  __Pyx_GIVEREF(__pyx_t_8);
20642  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
20643  __pyx_t_8 = 0;
20644  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20645  __Pyx_GOTREF(__pyx_t_8);
20646  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20647  __Pyx_GOTREF(__pyx_t_3);
20648  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_cutoff, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20649  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20650  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_wind_filt, __pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20651  __Pyx_GOTREF(__pyx_t_3);
20652  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20653  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20654  __pyx_t_8 = PyNumber_InPlaceMultiply(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20655  __Pyx_GOTREF(__pyx_t_8);
20656  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20657  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20658  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_t_18, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20659  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20660  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
20661 
20662  /* "WaveTools.pyx":971
20663  * self.nfft=len(wind[:,0])
20664  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20665  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt) # <<<<<<<<<<<<<<
20666  * self.N = min(self.N, len(decomp[0]))
20667  * Nftemp = self.N
20668  */
20669  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_decompose_tseries); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20670  __Pyx_GOTREF(__pyx_t_3);
20671  __pyx_t_7 = PyObject_GetItem(__pyx_v_wind, __pyx_tuple__118); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20672  __Pyx_GOTREF(__pyx_t_7);
20673  __pyx_t_11 = PyObject_GetItem(__pyx_v_wind, __pyx_tuple__120); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20674  __Pyx_GOTREF(__pyx_t_11);
20675  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dt); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20676  __Pyx_GOTREF(__pyx_t_5);
20677  __pyx_t_4 = NULL;
20678  __pyx_t_13 = 0;
20679  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
20680  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
20681  if (likely(__pyx_t_4)) {
20682  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20683  __Pyx_INCREF(__pyx_t_4);
20684  __Pyx_INCREF(function);
20685  __Pyx_DECREF_SET(__pyx_t_3, function);
20686  __pyx_t_13 = 1;
20687  }
20688  }
20689  __pyx_t_19 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20690  __Pyx_GOTREF(__pyx_t_19);
20691  if (__pyx_t_4) {
20692  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_4); __pyx_t_4 = NULL;
20693  }
20694  __Pyx_GIVEREF(__pyx_t_7);
20695  PyTuple_SET_ITEM(__pyx_t_19, 0+__pyx_t_13, __pyx_t_7);
20696  __Pyx_GIVEREF(__pyx_t_11);
20697  PyTuple_SET_ITEM(__pyx_t_19, 1+__pyx_t_13, __pyx_t_11);
20698  __Pyx_GIVEREF(__pyx_t_5);
20699  PyTuple_SET_ITEM(__pyx_t_19, 2+__pyx_t_13, __pyx_t_5);
20700  __pyx_t_7 = 0;
20701  __pyx_t_11 = 0;
20702  __pyx_t_5 = 0;
20703  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_19, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20704  __Pyx_GOTREF(__pyx_t_8);
20705  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
20706  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20707  __Pyx_XDECREF_SET(__pyx_v_decomp, __pyx_t_8);
20708  __pyx_t_8 = 0;
20709 
20710  /* "WaveTools.pyx":972
20711  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20712  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20713  * self.N = min(self.N, len(decomp[0])) # <<<<<<<<<<<<<<
20714  * Nftemp = self.N
20715  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20716  */
20717  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20718  __Pyx_GOTREF(__pyx_t_8);
20719  __pyx_t_13 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20720  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20721  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20722  __Pyx_GOTREF(__pyx_t_8);
20723  __pyx_t_19 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20724  __Pyx_GOTREF(__pyx_t_19);
20725  __pyx_t_5 = PyObject_RichCompare(__pyx_t_19, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20726  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
20727  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20728  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20729  if (__pyx_t_2) {
20730  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20731  __Pyx_GOTREF(__pyx_t_5);
20732  __pyx_t_3 = __pyx_t_5;
20733  __pyx_t_5 = 0;
20734  } else {
20735  __Pyx_INCREF(__pyx_t_8);
20736  __pyx_t_3 = __pyx_t_8;
20737  }
20738  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20739  __pyx_t_8 = __pyx_t_3;
20740  __Pyx_INCREF(__pyx_t_8);
20741  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20742  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_N, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20743  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20744 
20745  /* "WaveTools.pyx":973
20746  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20747  * self.N = min(self.N, len(decomp[0]))
20748  * Nftemp = self.N # <<<<<<<<<<<<<<
20749  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20750  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20751  */
20752  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20753  __Pyx_GOTREF(__pyx_t_8);
20754  __Pyx_XDECREF_SET(__pyx_v_Nftemp, __pyx_t_8);
20755  __pyx_t_8 = 0;
20756 
20757  /* "WaveTools.pyx":974
20758  * self.N = min(self.N, len(decomp[0]))
20759  * Nftemp = self.N
20760  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0] # <<<<<<<<<<<<<<
20761  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20762  * imin = max(0,ipeak - Nftemp/2)
20763  */
20764  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20765  __Pyx_GOTREF(__pyx_t_3);
20766  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_where); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20767  __Pyx_GOTREF(__pyx_t_5);
20768  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20769  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20770  __Pyx_GOTREF(__pyx_t_3);
20771  __pyx_t_19 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_19 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20772  __Pyx_GOTREF(__pyx_t_19);
20773  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20774  __Pyx_GOTREF(__pyx_t_11);
20775  __Pyx_GIVEREF(__pyx_t_19);
20776  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_19);
20777  __pyx_t_19 = 0;
20778  __pyx_t_19 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_11, NULL); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20779  __Pyx_GOTREF(__pyx_t_19);
20780  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20781  __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_19, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20782  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20783  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
20784  __pyx_t_19 = NULL;
20785  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
20786  __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_5);
20787  if (likely(__pyx_t_19)) {
20788  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
20789  __Pyx_INCREF(__pyx_t_19);
20790  __Pyx_INCREF(function);
20791  __Pyx_DECREF_SET(__pyx_t_5, function);
20792  }
20793  }
20794  if (!__pyx_t_19) {
20795  __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20796  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20797  __Pyx_GOTREF(__pyx_t_8);
20798  } else {
20799  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20800  __Pyx_GOTREF(__pyx_t_3);
20801  __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_19); __pyx_t_19 = NULL;
20802  __Pyx_GIVEREF(__pyx_t_11);
20803  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_11);
20804  __pyx_t_11 = 0;
20805  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20806  __Pyx_GOTREF(__pyx_t_8);
20807  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20808  }
20809  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20810  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20811  __Pyx_GOTREF(__pyx_t_5);
20812  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20813  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20814  __Pyx_GOTREF(__pyx_t_8);
20815  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20816  __Pyx_XDECREF_SET(__pyx_v_ipeak, __pyx_t_8);
20817  __pyx_t_8 = 0;
20818 
20819  /* "WaveTools.pyx":975
20820  * Nftemp = self.N
20821  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20822  * imax = min(ipeak + Nftemp/2,len(decomp[1])) # <<<<<<<<<<<<<<
20823  * imin = max(0,ipeak - Nftemp/2)
20824  * self.Nf = imax-imin
20825  */
20826  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20827  __Pyx_GOTREF(__pyx_t_8);
20828  __pyx_t_13 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20829  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20830  __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_v_Nftemp, __pyx_int_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20831  __Pyx_GOTREF(__pyx_t_8);
20832  __pyx_t_5 = PyNumber_Add(__pyx_v_ipeak, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20833  __Pyx_GOTREF(__pyx_t_5);
20834  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20835  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20836  __Pyx_GOTREF(__pyx_t_3);
20837  __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20838  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20839  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20840  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20841  if (__pyx_t_2) {
20842  __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20843  __Pyx_GOTREF(__pyx_t_11);
20844  __pyx_t_8 = __pyx_t_11;
20845  __pyx_t_11 = 0;
20846  } else {
20847  __Pyx_INCREF(__pyx_t_5);
20848  __pyx_t_8 = __pyx_t_5;
20849  }
20850  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20851  __pyx_t_5 = __pyx_t_8;
20852  __Pyx_INCREF(__pyx_t_5);
20853  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20854  __Pyx_XDECREF_SET(__pyx_v_imax, __pyx_t_5);
20855  __pyx_t_5 = 0;
20856 
20857  /* "WaveTools.pyx":976
20858  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20859  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20860  * imin = max(0,ipeak - Nftemp/2) # <<<<<<<<<<<<<<
20861  * self.Nf = imax-imin
20862  * if (self.Nf < self.N):
20863  */
20864  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_Nftemp, __pyx_int_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20865  __Pyx_GOTREF(__pyx_t_5);
20866  __pyx_t_8 = PyNumber_Subtract(__pyx_v_ipeak, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20867  __Pyx_GOTREF(__pyx_t_8);
20868  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20869  __pyx_t_12 = 0;
20870  __pyx_t_11 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20871  __Pyx_GOTREF(__pyx_t_11);
20872  __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_t_11, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20873  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20874  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20875  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20876  if (__pyx_t_2) {
20877  __Pyx_INCREF(__pyx_t_8);
20878  __pyx_t_5 = __pyx_t_8;
20879  } else {
20880  __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20881  __Pyx_GOTREF(__pyx_t_3);
20882  __pyx_t_5 = __pyx_t_3;
20883  __pyx_t_3 = 0;
20884  }
20885  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20886  __pyx_t_8 = __pyx_t_5;
20887  __Pyx_INCREF(__pyx_t_8);
20888  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20889  __Pyx_XDECREF_SET(__pyx_v_imin, __pyx_t_8);
20890  __pyx_t_8 = 0;
20891 
20892  /* "WaveTools.pyx":977
20893  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20894  * imin = max(0,ipeak - Nftemp/2)
20895  * self.Nf = imax-imin # <<<<<<<<<<<<<<
20896  * if (self.Nf < self.N):
20897  * if imin == 0:
20898  */
20899  __pyx_t_8 = PyNumber_Subtract(__pyx_v_imax, __pyx_v_imin); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20900  __Pyx_GOTREF(__pyx_t_8);
20901  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nf, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20902  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20903 
20904  /* "WaveTools.pyx":978
20905  * imin = max(0,ipeak - Nftemp/2)
20906  * self.Nf = imax-imin
20907  * if (self.Nf < self.N): # <<<<<<<<<<<<<<
20908  * if imin == 0:
20909  * imax = imax + (self.N - self.Nf)
20910  */
20911  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20912  __Pyx_GOTREF(__pyx_t_8);
20913  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20914  __Pyx_GOTREF(__pyx_t_5);
20915  __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20916  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20917  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20918  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20919  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20920  if (__pyx_t_2) {
20921 
20922  /* "WaveTools.pyx":979
20923  * self.Nf = imax-imin
20924  * if (self.Nf < self.N):
20925  * if imin == 0: # <<<<<<<<<<<<<<
20926  * imax = imax + (self.N - self.Nf)
20927  * else:
20928  */
20929  __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_imin, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20930  __Pyx_GOTREF(__pyx_t_3);
20931  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20932  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20933  if (__pyx_t_2) {
20934 
20935  /* "WaveTools.pyx":980
20936  * if (self.Nf < self.N):
20937  * if imin == 0:
20938  * imax = imax + (self.N - self.Nf) # <<<<<<<<<<<<<<
20939  * else:
20940  * imin = imin - (self.N - self.Nf)
20941  */
20942  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20943  __Pyx_GOTREF(__pyx_t_3);
20944  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20945  __Pyx_GOTREF(__pyx_t_5);
20946  __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20947  __Pyx_GOTREF(__pyx_t_8);
20948  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20949  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20950  __pyx_t_5 = PyNumber_Add(__pyx_v_imax, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20951  __Pyx_GOTREF(__pyx_t_5);
20952  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20953  __Pyx_DECREF_SET(__pyx_v_imax, __pyx_t_5);
20954  __pyx_t_5 = 0;
20955 
20956  /* "WaveTools.pyx":979
20957  * self.Nf = imax-imin
20958  * if (self.Nf < self.N):
20959  * if imin == 0: # <<<<<<<<<<<<<<
20960  * imax = imax + (self.N - self.Nf)
20961  * else:
20962  */
20963  goto __pyx_L75;
20964  }
20965 
20966  /* "WaveTools.pyx":982
20967  * imax = imax + (self.N - self.Nf)
20968  * else:
20969  * imin = imin - (self.N - self.Nf) # <<<<<<<<<<<<<<
20970  * self.Nf = self.N
20971  *
20972  */
20973  /*else*/ {
20974  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20975  __Pyx_GOTREF(__pyx_t_5);
20976  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20977  __Pyx_GOTREF(__pyx_t_8);
20978  __pyx_t_3 = PyNumber_Subtract(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20979  __Pyx_GOTREF(__pyx_t_3);
20980  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20981  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20982  __pyx_t_8 = PyNumber_Subtract(__pyx_v_imin, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20983  __Pyx_GOTREF(__pyx_t_8);
20984  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20985  __Pyx_DECREF_SET(__pyx_v_imin, __pyx_t_8);
20986  __pyx_t_8 = 0;
20987  }
20988  __pyx_L75:;
20989 
20990  /* "WaveTools.pyx":983
20991  * else:
20992  * imin = imin - (self.N - self.Nf)
20993  * self.Nf = self.N # <<<<<<<<<<<<<<
20994  *
20995  * decomp[1] = decomp[1][imin:imax]
20996  */
20997  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20998  __Pyx_GOTREF(__pyx_t_8);
20999  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nf, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21000  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21001 
21002  /* "WaveTools.pyx":978
21003  * imin = max(0,ipeak - Nftemp/2)
21004  * self.Nf = imax-imin
21005  * if (self.Nf < self.N): # <<<<<<<<<<<<<<
21006  * if imin == 0:
21007  * imax = imax + (self.N - self.Nf)
21008  */
21009  }
21010 
21011  /* "WaveTools.pyx":985
21012  * self.Nf = self.N
21013  *
21014  * decomp[1] = decomp[1][imin:imax] # <<<<<<<<<<<<<<
21015  * decomp[0] = decomp[0][imin:imax]
21016  * decomp[2] = -decomp[2][imin:imax]
21017  */
21018  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21019  __Pyx_GOTREF(__pyx_t_8);
21020  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_8, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21021  __Pyx_GOTREF(__pyx_t_3);
21022  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21023  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 1, __pyx_t_3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21024  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21025 
21026  /* "WaveTools.pyx":986
21027  *
21028  * decomp[1] = decomp[1][imin:imax]
21029  * decomp[0] = decomp[0][imin:imax] # <<<<<<<<<<<<<<
21030  * decomp[2] = -decomp[2][imin:imax]
21031  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
21032  */
21033  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21034  __Pyx_GOTREF(__pyx_t_3);
21035  __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21036  __Pyx_GOTREF(__pyx_t_8);
21037  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21038  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 0, __pyx_t_8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21039  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21040 
21041  /* "WaveTools.pyx":987
21042  * decomp[1] = decomp[1][imin:imax]
21043  * decomp[0] = decomp[0][imin:imax]
21044  * decomp[2] = -decomp[2][imin:imax] # <<<<<<<<<<<<<<
21045  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
21046  * kDir = np.zeros((len(ki),3),"d")
21047  */
21048  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21049  __Pyx_GOTREF(__pyx_t_8);
21050  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_8, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21051  __Pyx_GOTREF(__pyx_t_3);
21052  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21053  __pyx_t_8 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21054  __Pyx_GOTREF(__pyx_t_8);
21055  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21056  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 2, __pyx_t_8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21057  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21058 
21059  /* "WaveTools.pyx":988
21060  * decomp[0] = decomp[0][imin:imax]
21061  * decomp[2] = -decomp[2][imin:imax]
21062  * ki = dispersion(decomp[0],self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
21063  * kDir = np.zeros((len(ki),3),"d")
21064  * for ii in range(len(ki)):
21065  */
21066  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21067  __Pyx_GOTREF(__pyx_t_8);
21068  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21069  __Pyx_GOTREF(__pyx_t_3);
21070  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21071  __Pyx_GOTREF(__pyx_t_5);
21072  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21073  __Pyx_GOTREF(__pyx_t_11);
21074  __Pyx_GIVEREF(__pyx_t_3);
21075  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3);
21076  __Pyx_GIVEREF(__pyx_t_5);
21077  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
21078  __pyx_t_3 = 0;
21079  __pyx_t_5 = 0;
21080  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21081  __Pyx_GOTREF(__pyx_t_5);
21082  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21083  __Pyx_GOTREF(__pyx_t_3);
21084  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_g, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21085  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21086  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21087  __Pyx_GOTREF(__pyx_t_3);
21088  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21089  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21090  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21091  __Pyx_XDECREF_SET(__pyx_v_ki, __pyx_t_3);
21092  __pyx_t_3 = 0;
21093 
21094  /* "WaveTools.pyx":989
21095  * decomp[2] = -decomp[2][imin:imax]
21096  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
21097  * kDir = np.zeros((len(ki),3),"d") # <<<<<<<<<<<<<<
21098  * for ii in range(len(ki)):
21099  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21100  */
21101  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21102  __Pyx_GOTREF(__pyx_t_5);
21103  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21104  __Pyx_GOTREF(__pyx_t_11);
21105  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21106  __pyx_t_13 = PyObject_Length(__pyx_v_ki); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21107  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21108  __Pyx_GOTREF(__pyx_t_5);
21109  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21110  __Pyx_GOTREF(__pyx_t_8);
21111  __Pyx_GIVEREF(__pyx_t_5);
21112  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
21113  __Pyx_INCREF(__pyx_int_3);
21114  __Pyx_GIVEREF(__pyx_int_3);
21115  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_3);
21116  __pyx_t_5 = 0;
21117  __pyx_t_5 = NULL;
21118  __pyx_t_13 = 0;
21119  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
21120  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
21121  if (likely(__pyx_t_5)) {
21122  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
21123  __Pyx_INCREF(__pyx_t_5);
21124  __Pyx_INCREF(function);
21125  __Pyx_DECREF_SET(__pyx_t_11, function);
21126  __pyx_t_13 = 1;
21127  }
21128  }
21129  __pyx_t_19 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21130  __Pyx_GOTREF(__pyx_t_19);
21131  if (__pyx_t_5) {
21132  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_5); __pyx_t_5 = NULL;
21133  }
21134  __Pyx_GIVEREF(__pyx_t_8);
21135  PyTuple_SET_ITEM(__pyx_t_19, 0+__pyx_t_13, __pyx_t_8);
21136  __Pyx_INCREF(__pyx_n_s_d);
21137  __Pyx_GIVEREF(__pyx_n_s_d);
21138  PyTuple_SET_ITEM(__pyx_t_19, 1+__pyx_t_13, __pyx_n_s_d);
21139  __pyx_t_8 = 0;
21140  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_19, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21141  __Pyx_GOTREF(__pyx_t_3);
21142  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
21143  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21144  __Pyx_XDECREF_SET(__pyx_v_kDir, __pyx_t_3);
21145  __pyx_t_3 = 0;
21146 
21147  /* "WaveTools.pyx":990
21148  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
21149  * kDir = np.zeros((len(ki),3),"d")
21150  * for ii in range(len(ki)): # <<<<<<<<<<<<<<
21151  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21152  * decomp.append(kDir)
21153  */
21154  __pyx_t_13 = PyObject_Length(__pyx_v_ki); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21155  for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_13; __pyx_t_20+=1) {
21156  __pyx_v_ii = __pyx_t_20;
21157 
21158  /* "WaveTools.pyx":991
21159  * kDir = np.zeros((len(ki),3),"d")
21160  * for ii in range(len(ki)):
21161  * kDir[ii,:] = ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
21162  * decomp.append(kDir)
21163  * decomp.append(ki)
21164  */
21165  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_ki, __pyx_v_ii, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21166  __Pyx_GOTREF(__pyx_t_3);
21167  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21168  __Pyx_GOTREF(__pyx_t_11);
21169  __pyx_t_19 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, NULL, NULL, &__pyx_slice__121, 0, 0, 1); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21170  __Pyx_GOTREF(__pyx_t_19);
21171  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21172  __pyx_t_11 = PyNumber_Multiply(__pyx_t_3, __pyx_t_19); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21173  __Pyx_GOTREF(__pyx_t_11);
21174  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21175  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
21176  __pyx_t_19 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21177  __Pyx_GOTREF(__pyx_t_19);
21178  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21179  __Pyx_GOTREF(__pyx_t_3);
21180  __Pyx_GIVEREF(__pyx_t_19);
21181  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_19);
21182  __Pyx_INCREF(__pyx_slice__122);
21183  __Pyx_GIVEREF(__pyx_slice__122);
21184  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__122);
21185  __pyx_t_19 = 0;
21186  if (unlikely(PyObject_SetItem(__pyx_v_kDir, __pyx_t_3, __pyx_t_11) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21187  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21188  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21189  }
21190 
21191  /* "WaveTools.pyx":992
21192  * for ii in range(len(ki)):
21193  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21194  * decomp.append(kDir) # <<<<<<<<<<<<<<
21195  * decomp.append(ki)
21196  *
21197  */
21198  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_v_decomp, __pyx_v_kDir); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21199 
21200  /* "WaveTools.pyx":993
21201  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21202  * decomp.append(kDir)
21203  * decomp.append(ki) # <<<<<<<<<<<<<<
21204  *
21205  * self.decompose_window.append(decomp)
21206  */
21207  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_v_decomp, __pyx_v_ki); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21208 
21209  /* "WaveTools.pyx":995
21210  * decomp.append(ki)
21211  *
21212  * self.decompose_window.append(decomp) # <<<<<<<<<<<<<<
21213  *
21214  *
21215  */
21216  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21217  __Pyx_GOTREF(__pyx_t_11);
21218  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_t_11, __pyx_v_decomp); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21219  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21220 
21221  /* "WaveTools.pyx":968
21222  * # ii = 0
21223  *
21224  * for wind in self.windows_rec: # <<<<<<<<<<<<<<
21225  * self.nfft=len(wind[:,0])
21226  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
21227  */
21228  }
21229  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21230  }
21231  __pyx_L13:;
21232 
21233  /* "WaveTools.pyx":998
21234  *
21235  *
21236  * if(self.rec_direct): # <<<<<<<<<<<<<<
21237  * self.eta = self.etaDirect
21238  * self.u = self.uDirect
21239  */
21240  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_rec_direct); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21241  __Pyx_GOTREF(__pyx_t_6);
21242  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21243  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21244  if (__pyx_t_2) {
21245 
21246  /* "WaveTools.pyx":999
21247  *
21248  * if(self.rec_direct):
21249  * self.eta = self.etaDirect # <<<<<<<<<<<<<<
21250  * self.u = self.uDirect
21251  * else:
21252  */
21253  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_etaDirect); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21254  __Pyx_GOTREF(__pyx_t_6);
21255  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21256  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21257 
21258  /* "WaveTools.pyx":1000
21259  * if(self.rec_direct):
21260  * self.eta = self.etaDirect
21261  * self.u = self.uDirect # <<<<<<<<<<<<<<
21262  * else:
21263  * self.eta = self.etaWindow
21264  */
21265  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_uDirect); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21266  __Pyx_GOTREF(__pyx_t_6);
21267  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_u, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21268  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21269 
21270  /* "WaveTools.pyx":998
21271  *
21272  *
21273  * if(self.rec_direct): # <<<<<<<<<<<<<<
21274  * self.eta = self.etaDirect
21275  * self.u = self.uDirect
21276  */
21277  goto __pyx_L78;
21278  }
21279 
21280  /* "WaveTools.pyx":1002
21281  * self.u = self.uDirect
21282  * else:
21283  * self.eta = self.etaWindow # <<<<<<<<<<<<<<
21284  * self.u = self.uWindow
21285  *
21286  */
21287  /*else*/ {
21288  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_etaWindow); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21289  __Pyx_GOTREF(__pyx_t_6);
21290  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21291  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21292 
21293  /* "WaveTools.pyx":1003
21294  * else:
21295  * self.eta = self.etaWindow
21296  * self.u = self.uWindow # <<<<<<<<<<<<<<
21297  *
21298  * # if style == "k-":
21299  */
21300  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_uWindow); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21301  __Pyx_GOTREF(__pyx_t_6);
21302  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_u, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21303  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21304  }
21305  __pyx_L78:;
21306 
21307  /* "WaveTools.pyx":763
21308  * """
21309  *
21310  * def __init__(self, # <<<<<<<<<<<<<<
21311  * timeSeriesFile, # e.g.= "Timeseries.txt",
21312  * skiprows,
21313  */
21314 
21315  /* function exit code */
21316  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
21317  goto __pyx_L0;
21318  __pyx_L1_error:;
21319  __Pyx_XDECREF(__pyx_t_3);
21320  __Pyx_XDECREF(__pyx_t_4);
21321  __Pyx_XDECREF(__pyx_t_5);
21322  __Pyx_XDECREF(__pyx_t_6);
21323  __Pyx_XDECREF(__pyx_t_7);
21324  __Pyx_XDECREF(__pyx_t_8);
21325  __Pyx_XDECREF(__pyx_t_11);
21326  __Pyx_XDECREF(__pyx_t_18);
21327  __Pyx_XDECREF(__pyx_t_19);
21328  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
21329  __pyx_r = NULL;
21330  __pyx_L0:;
21331  __Pyx_XDECREF(__pyx_v_filetype);
21332  __Pyx_XDECREF(__pyx_v_fid);
21333  __Pyx_XDECREF(__pyx_v_tdata);
21334  __Pyx_XDECREF(__pyx_v_time_temp);
21335  __Pyx_XDECREF(__pyx_v_i);
21336  __Pyx_XDECREF(__pyx_v_dt_temp);
21337  __Pyx_XDECREF(__pyx_v_Nf);
21338  __Pyx_XDECREF(__pyx_v_ipeak);
21339  __Pyx_XDECREF(__pyx_v_imax);
21340  __Pyx_XDECREF(__pyx_v_imin);
21341  __Pyx_XDECREF(__pyx_v_validWindows);
21342  __Pyx_XDECREF(__pyx_v_wind_filt);
21343  __Pyx_XDECREF(__pyx_v_diff);
21344  __Pyx_XDECREF(__pyx_v_jj);
21345  __Pyx_XDECREF(__pyx_v_span);
21346  __Pyx_XDECREF(__pyx_v_tfirst);
21347  __Pyx_XDECREF(__pyx_v_tlast);
21348  __Pyx_XDECREF(__pyx_v_ispan1);
21349  __Pyx_XDECREF(__pyx_v_ispan2);
21350  __Pyx_XDECREF(__pyx_v_tstart);
21351  __Pyx_XDECREF(__pyx_v_wind);
21352  __Pyx_XDECREF(__pyx_v_decomp);
21353  __Pyx_XDECREF(__pyx_v_Nftemp);
21354  __Pyx_XDECREF(__pyx_v_ki);
21355  __Pyx_XDECREF(__pyx_v_kDir);
21356  __Pyx_XGIVEREF(__pyx_r);
21357  __Pyx_RefNannyFinishContext();
21358  return __pyx_r;
21359 }
21360 
21361 /* "WaveTools.pyx":1019
21362  * # self.Noverlap = int(self.Npw *0.25)
21363  *
21364  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
21365  * """Free surface displacement
21366  * :param x: floating point x coordinate
21367  */
21368 
21369 /* Python wrapper */
21370 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3etaDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
21371 static char __pyx_doc_9WaveTools_10TimeSeries_2etaDirect[] = "TimeSeries.etaDirect(self, x, t)\nFree surface displacement\n :param x: floating point x coordinate\n :param t: time";
21372 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_3etaDirect = {"etaDirect", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_3etaDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_2etaDirect};
21373 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3etaDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
21374  PyObject *__pyx_v_self = 0;
21375  PyObject *__pyx_v_x = 0;
21376  PyObject *__pyx_v_t = 0;
21377  int __pyx_lineno = 0;
21378  const char *__pyx_filename = NULL;
21379  int __pyx_clineno = 0;
21380  PyObject *__pyx_r = 0;
21381  __Pyx_RefNannyDeclarations
21382  __Pyx_RefNannySetupContext("etaDirect (wrapper)", 0);
21383  {
21384  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
21385  PyObject* values[3] = {0,0,0};
21386  if (unlikely(__pyx_kwds)) {
21387  Py_ssize_t kw_args;
21388  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
21389  switch (pos_args) {
21390  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21391  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21392  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21393  case 0: break;
21394  default: goto __pyx_L5_argtuple_error;
21395  }
21396  kw_args = PyDict_Size(__pyx_kwds);
21397  switch (pos_args) {
21398  case 0:
21399  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
21400  else goto __pyx_L5_argtuple_error;
21401  case 1:
21402  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
21403  else {
21404  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21405  }
21406  case 2:
21407  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
21408  else {
21409  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21410  }
21411  }
21412  if (unlikely(kw_args > 0)) {
21413  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "etaDirect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21414  }
21415  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
21416  goto __pyx_L5_argtuple_error;
21417  } else {
21418  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21419  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21420  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21421  }
21422  __pyx_v_self = values[0];
21423  __pyx_v_x = values[1];
21424  __pyx_v_t = values[2];
21425  }
21426  goto __pyx_L4_argument_unpacking_done;
21427  __pyx_L5_argtuple_error:;
21428  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21429  __pyx_L3_error:;
21430  __Pyx_AddTraceback("WaveTools.TimeSeries.etaDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
21431  __Pyx_RefNannyFinishContext();
21432  return NULL;
21433  __pyx_L4_argument_unpacking_done:;
21434  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_2etaDirect(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
21435 
21436  /* function exit code */
21437  __Pyx_RefNannyFinishContext();
21438  return __pyx_r;
21439 }
21440 
21441 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_2etaDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
21442  PyObject *__pyx_v_Eta = NULL;
21443  PyObject *__pyx_v_ii = NULL;
21444  PyObject *__pyx_v_x1 = NULL;
21445  PyObject *__pyx_r = NULL;
21446  __Pyx_RefNannyDeclarations
21447  PyObject *__pyx_t_1 = NULL;
21448  PyObject *__pyx_t_2 = NULL;
21449  Py_ssize_t __pyx_t_3;
21450  PyObject *(*__pyx_t_4)(PyObject *);
21451  PyObject *__pyx_t_5 = NULL;
21452  PyObject *__pyx_t_6 = NULL;
21453  PyObject *__pyx_t_7 = NULL;
21454  PyObject *__pyx_t_8 = NULL;
21455  PyObject *__pyx_t_9 = NULL;
21456  PyObject *__pyx_t_10 = NULL;
21457  PyObject *__pyx_t_11 = NULL;
21458  Py_ssize_t __pyx_t_12;
21459  PyObject *__pyx_t_13 = NULL;
21460  int __pyx_lineno = 0;
21461  const char *__pyx_filename = NULL;
21462  int __pyx_clineno = 0;
21463  __Pyx_RefNannySetupContext("etaDirect", 0);
21464 
21465  /* "WaveTools.pyx":1023
21466  * :param x: floating point x coordinate
21467  * :param t: time"""
21468  * Eta=0. # <<<<<<<<<<<<<<
21469  * for ii in range(0,self.Nf):
21470  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21471  */
21472  __Pyx_INCREF(__pyx_float_0_);
21473  __pyx_v_Eta = __pyx_float_0_;
21474 
21475  /* "WaveTools.pyx":1024
21476  * :param t: time"""
21477  * Eta=0.
21478  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
21479  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21480  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21481  */
21482  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21483  __Pyx_GOTREF(__pyx_t_1);
21484  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21485  __Pyx_GOTREF(__pyx_t_2);
21486  __Pyx_INCREF(__pyx_int_0);
21487  __Pyx_GIVEREF(__pyx_int_0);
21488  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
21489  __Pyx_GIVEREF(__pyx_t_1);
21490  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
21491  __pyx_t_1 = 0;
21492  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21493  __Pyx_GOTREF(__pyx_t_1);
21494  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21495  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
21496  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
21497  __pyx_t_4 = NULL;
21498  } else {
21499  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21500  __Pyx_GOTREF(__pyx_t_2);
21501  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21502  }
21503  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21504  for (;;) {
21505  if (likely(!__pyx_t_4)) {
21506  if (likely(PyList_CheckExact(__pyx_t_2))) {
21507  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
21508  #if CYTHON_COMPILING_IN_CPYTHON
21509  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21510  #else
21511  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21512  __Pyx_GOTREF(__pyx_t_1);
21513  #endif
21514  } else {
21515  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
21516  #if CYTHON_COMPILING_IN_CPYTHON
21517  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21518  #else
21519  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21520  __Pyx_GOTREF(__pyx_t_1);
21521  #endif
21522  }
21523  } else {
21524  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
21525  if (unlikely(!__pyx_t_1)) {
21526  PyObject* exc_type = PyErr_Occurred();
21527  if (exc_type) {
21528  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21529  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21530  }
21531  break;
21532  }
21533  __Pyx_GOTREF(__pyx_t_1);
21534  }
21535  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
21536  __pyx_t_1 = 0;
21537 
21538  /* "WaveTools.pyx":1025
21539  * Eta=0.
21540  * for ii in range(0,self.Nf):
21541  * x1 = np.array(x)-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
21542  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21543  * return Eta
21544  */
21545  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21546  __Pyx_GOTREF(__pyx_t_5);
21547  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21548  __Pyx_GOTREF(__pyx_t_6);
21549  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21550  __pyx_t_5 = NULL;
21551  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
21552  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
21553  if (likely(__pyx_t_5)) {
21554  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
21555  __Pyx_INCREF(__pyx_t_5);
21556  __Pyx_INCREF(function);
21557  __Pyx_DECREF_SET(__pyx_t_6, function);
21558  }
21559  }
21560  if (!__pyx_t_5) {
21561  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21562  __Pyx_GOTREF(__pyx_t_1);
21563  } else {
21564  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21565  __Pyx_GOTREF(__pyx_t_7);
21566  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
21567  __Pyx_INCREF(__pyx_v_x);
21568  __Pyx_GIVEREF(__pyx_v_x);
21569  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_x);
21570  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21571  __Pyx_GOTREF(__pyx_t_1);
21572  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21573  }
21574  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21575  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21576  __Pyx_GOTREF(__pyx_t_6);
21577  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21578  __Pyx_GOTREF(__pyx_t_7);
21579  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21580  __Pyx_GOTREF(__pyx_t_5);
21581  __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21582  __Pyx_GOTREF(__pyx_t_8);
21583  __Pyx_GIVEREF(__pyx_t_6);
21584  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
21585  __Pyx_GIVEREF(__pyx_t_7);
21586  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
21587  __Pyx_GIVEREF(__pyx_t_5);
21588  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_5);
21589  __pyx_t_6 = 0;
21590  __pyx_t_7 = 0;
21591  __pyx_t_5 = 0;
21592  __pyx_t_5 = PyNumber_Subtract(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21593  __Pyx_GOTREF(__pyx_t_5);
21594  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21595  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21596  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_5);
21597  __pyx_t_5 = 0;
21598 
21599  /* "WaveTools.pyx":1026
21600  * for ii in range(0,self.Nf):
21601  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21602  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii]) # <<<<<<<<<<<<<<
21603  * return Eta
21604  *
21605  */
21606  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21607  __Pyx_GOTREF(__pyx_t_8);
21608  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_t0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21609  __Pyx_GOTREF(__pyx_t_1);
21610  __pyx_t_7 = PyNumber_Subtract(__pyx_v_t, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21611  __Pyx_GOTREF(__pyx_t_7);
21612  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21613  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21614  __Pyx_GOTREF(__pyx_t_1);
21615  __pyx_t_6 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21616  __Pyx_GOTREF(__pyx_t_6);
21617  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21618  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21619  __Pyx_GOTREF(__pyx_t_1);
21620  __pyx_t_9 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21621  __Pyx_GOTREF(__pyx_t_9);
21622  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21623  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21624  __Pyx_GOTREF(__pyx_t_1);
21625  __pyx_t_10 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21626  __Pyx_GOTREF(__pyx_t_10);
21627  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21628  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21629  __Pyx_GOTREF(__pyx_t_1);
21630  __pyx_t_11 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21631  __Pyx_GOTREF(__pyx_t_11);
21632  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21633  __pyx_t_1 = NULL;
21634  __pyx_t_12 = 0;
21635  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
21636  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
21637  if (likely(__pyx_t_1)) {
21638  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
21639  __Pyx_INCREF(__pyx_t_1);
21640  __Pyx_INCREF(function);
21641  __Pyx_DECREF_SET(__pyx_t_8, function);
21642  __pyx_t_12 = 1;
21643  }
21644  }
21645  __pyx_t_13 = PyTuple_New(6+__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21646  __Pyx_GOTREF(__pyx_t_13);
21647  if (__pyx_t_1) {
21648  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
21649  }
21650  __Pyx_INCREF(__pyx_v_x1);
21651  __Pyx_GIVEREF(__pyx_v_x1);
21652  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_v_x1);
21653  __Pyx_GIVEREF(__pyx_t_7);
21654  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_7);
21655  __Pyx_GIVEREF(__pyx_t_6);
21656  PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_12, __pyx_t_6);
21657  __Pyx_GIVEREF(__pyx_t_9);
21658  PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_12, __pyx_t_9);
21659  __Pyx_GIVEREF(__pyx_t_10);
21660  PyTuple_SET_ITEM(__pyx_t_13, 4+__pyx_t_12, __pyx_t_10);
21661  __Pyx_GIVEREF(__pyx_t_11);
21662  PyTuple_SET_ITEM(__pyx_t_13, 5+__pyx_t_12, __pyx_t_11);
21663  __pyx_t_7 = 0;
21664  __pyx_t_6 = 0;
21665  __pyx_t_9 = 0;
21666  __pyx_t_10 = 0;
21667  __pyx_t_11 = 0;
21668  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21669  __Pyx_GOTREF(__pyx_t_5);
21670  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
21671  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21672  __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21673  __Pyx_GOTREF(__pyx_t_8);
21674  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21675  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_8);
21676  __pyx_t_8 = 0;
21677 
21678  /* "WaveTools.pyx":1024
21679  * :param t: time"""
21680  * Eta=0.
21681  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
21682  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21683  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21684  */
21685  }
21686  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21687 
21688  /* "WaveTools.pyx":1027
21689  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21690  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21691  * return Eta # <<<<<<<<<<<<<<
21692  *
21693  * def uDirect(self, x, t):
21694  */
21695  __Pyx_XDECREF(__pyx_r);
21696  __Pyx_INCREF(__pyx_v_Eta);
21697  __pyx_r = __pyx_v_Eta;
21698  goto __pyx_L0;
21699 
21700  /* "WaveTools.pyx":1019
21701  * # self.Noverlap = int(self.Npw *0.25)
21702  *
21703  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
21704  * """Free surface displacement
21705  * :param x: floating point x coordinate
21706  */
21707 
21708  /* function exit code */
21709  __pyx_L1_error:;
21710  __Pyx_XDECREF(__pyx_t_1);
21711  __Pyx_XDECREF(__pyx_t_2);
21712  __Pyx_XDECREF(__pyx_t_5);
21713  __Pyx_XDECREF(__pyx_t_6);
21714  __Pyx_XDECREF(__pyx_t_7);
21715  __Pyx_XDECREF(__pyx_t_8);
21716  __Pyx_XDECREF(__pyx_t_9);
21717  __Pyx_XDECREF(__pyx_t_10);
21718  __Pyx_XDECREF(__pyx_t_11);
21719  __Pyx_XDECREF(__pyx_t_13);
21720  __Pyx_AddTraceback("WaveTools.TimeSeries.etaDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
21721  __pyx_r = NULL;
21722  __pyx_L0:;
21723  __Pyx_XDECREF(__pyx_v_Eta);
21724  __Pyx_XDECREF(__pyx_v_ii);
21725  __Pyx_XDECREF(__pyx_v_x1);
21726  __Pyx_XGIVEREF(__pyx_r);
21727  __Pyx_RefNannyFinishContext();
21728  return __pyx_r;
21729 }
21730 
21731 /* "WaveTools.pyx":1029
21732  * return Eta
21733  *
21734  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
21735  * """x-component of velocity
21736  *
21737  */
21738 
21739 /* Python wrapper */
21740 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_5uDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
21741 static char __pyx_doc_9WaveTools_10TimeSeries_4uDirect[] = "TimeSeries.uDirect(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
21742 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_5uDirect = {"uDirect", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_5uDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_4uDirect};
21743 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_5uDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
21744  PyObject *__pyx_v_self = 0;
21745  PyObject *__pyx_v_x = 0;
21746  PyObject *__pyx_v_t = 0;
21747  int __pyx_lineno = 0;
21748  const char *__pyx_filename = NULL;
21749  int __pyx_clineno = 0;
21750  PyObject *__pyx_r = 0;
21751  __Pyx_RefNannyDeclarations
21752  __Pyx_RefNannySetupContext("uDirect (wrapper)", 0);
21753  {
21754  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
21755  PyObject* values[3] = {0,0,0};
21756  if (unlikely(__pyx_kwds)) {
21757  Py_ssize_t kw_args;
21758  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
21759  switch (pos_args) {
21760  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21761  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21762  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21763  case 0: break;
21764  default: goto __pyx_L5_argtuple_error;
21765  }
21766  kw_args = PyDict_Size(__pyx_kwds);
21767  switch (pos_args) {
21768  case 0:
21769  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
21770  else goto __pyx_L5_argtuple_error;
21771  case 1:
21772  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
21773  else {
21774  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21775  }
21776  case 2:
21777  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
21778  else {
21779  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21780  }
21781  }
21782  if (unlikely(kw_args > 0)) {
21783  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uDirect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21784  }
21785  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
21786  goto __pyx_L5_argtuple_error;
21787  } else {
21788  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21789  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21790  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21791  }
21792  __pyx_v_self = values[0];
21793  __pyx_v_x = values[1];
21794  __pyx_v_t = values[2];
21795  }
21796  goto __pyx_L4_argument_unpacking_done;
21797  __pyx_L5_argtuple_error:;
21798  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21799  __pyx_L3_error:;
21800  __Pyx_AddTraceback("WaveTools.TimeSeries.uDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
21801  __Pyx_RefNannyFinishContext();
21802  return NULL;
21803  __pyx_L4_argument_unpacking_done:;
21804  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_4uDirect(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
21805 
21806  /* function exit code */
21807  __Pyx_RefNannyFinishContext();
21808  return __pyx_r;
21809 }
21810 
21811 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_4uDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
21812  PyObject *__pyx_v_U = NULL;
21813  PyObject *__pyx_v_ii = NULL;
21814  PyObject *__pyx_v_x1 = NULL;
21815  PyObject *__pyx_r = NULL;
21816  __Pyx_RefNannyDeclarations
21817  PyObject *__pyx_t_1 = NULL;
21818  PyObject *__pyx_t_2 = NULL;
21819  Py_ssize_t __pyx_t_3;
21820  PyObject *(*__pyx_t_4)(PyObject *);
21821  PyObject *__pyx_t_5 = NULL;
21822  PyObject *__pyx_t_6 = NULL;
21823  PyObject *__pyx_t_7 = NULL;
21824  PyObject *__pyx_t_8 = NULL;
21825  PyObject *__pyx_t_9 = NULL;
21826  PyObject *__pyx_t_10 = NULL;
21827  PyObject *__pyx_t_11 = NULL;
21828  PyObject *__pyx_t_12 = NULL;
21829  PyObject *__pyx_t_13 = NULL;
21830  PyObject *__pyx_t_14 = NULL;
21831  PyObject *__pyx_t_15 = NULL;
21832  PyObject *__pyx_t_16 = NULL;
21833  Py_ssize_t __pyx_t_17;
21834  PyObject *__pyx_t_18 = NULL;
21835  int __pyx_lineno = 0;
21836  const char *__pyx_filename = NULL;
21837  int __pyx_clineno = 0;
21838  __Pyx_RefNannySetupContext("uDirect", 0);
21839 
21840  /* "WaveTools.pyx":1036
21841  * :param t: time
21842  * """
21843  * U=0. # <<<<<<<<<<<<<<
21844  * for ii in range(0,self.Nf):
21845  * x1 = x-[self.x0, self.y0, self.z0]
21846  */
21847  __Pyx_INCREF(__pyx_float_0_);
21848  __pyx_v_U = __pyx_float_0_;
21849 
21850  /* "WaveTools.pyx":1037
21851  * """
21852  * U=0.
21853  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
21854  * x1 = x-[self.x0, self.y0, self.z0]
21855  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
21856  */
21857  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21858  __Pyx_GOTREF(__pyx_t_1);
21859  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21860  __Pyx_GOTREF(__pyx_t_2);
21861  __Pyx_INCREF(__pyx_int_0);
21862  __Pyx_GIVEREF(__pyx_int_0);
21863  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
21864  __Pyx_GIVEREF(__pyx_t_1);
21865  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
21866  __pyx_t_1 = 0;
21867  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21868  __Pyx_GOTREF(__pyx_t_1);
21869  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21870  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
21871  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
21872  __pyx_t_4 = NULL;
21873  } else {
21874  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21875  __Pyx_GOTREF(__pyx_t_2);
21876  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21877  }
21878  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21879  for (;;) {
21880  if (likely(!__pyx_t_4)) {
21881  if (likely(PyList_CheckExact(__pyx_t_2))) {
21882  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
21883  #if CYTHON_COMPILING_IN_CPYTHON
21884  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21885  #else
21886  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21887  __Pyx_GOTREF(__pyx_t_1);
21888  #endif
21889  } else {
21890  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
21891  #if CYTHON_COMPILING_IN_CPYTHON
21892  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21893  #else
21894  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21895  __Pyx_GOTREF(__pyx_t_1);
21896  #endif
21897  }
21898  } else {
21899  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
21900  if (unlikely(!__pyx_t_1)) {
21901  PyObject* exc_type = PyErr_Occurred();
21902  if (exc_type) {
21903  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21904  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21905  }
21906  break;
21907  }
21908  __Pyx_GOTREF(__pyx_t_1);
21909  }
21910  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
21911  __pyx_t_1 = 0;
21912 
21913  /* "WaveTools.pyx":1038
21914  * U=0.
21915  * for ii in range(0,self.Nf):
21916  * x1 = x-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
21917  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
21918  * return U
21919  */
21920  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21921  __Pyx_GOTREF(__pyx_t_1);
21922  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21923  __Pyx_GOTREF(__pyx_t_5);
21924  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21925  __Pyx_GOTREF(__pyx_t_6);
21926  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21927  __Pyx_GOTREF(__pyx_t_7);
21928  __Pyx_GIVEREF(__pyx_t_1);
21929  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
21930  __Pyx_GIVEREF(__pyx_t_5);
21931  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
21932  __Pyx_GIVEREF(__pyx_t_6);
21933  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
21934  __pyx_t_1 = 0;
21935  __pyx_t_5 = 0;
21936  __pyx_t_6 = 0;
21937  __pyx_t_6 = PyNumber_Subtract(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21938  __Pyx_GOTREF(__pyx_t_6);
21939  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21940  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_6);
21941  __pyx_t_6 = 0;
21942 
21943  /* "WaveTools.pyx":1039
21944  * for ii in range(0,self.Nf):
21945  * x1 = x-[self.x0, self.y0, self.z0]
21946  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
21947  * return U
21948  *
21949  */
21950  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21951  __Pyx_GOTREF(__pyx_t_7);
21952  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_t0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21953  __Pyx_GOTREF(__pyx_t_5);
21954  __pyx_t_1 = PyNumber_Subtract(__pyx_v_t, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21955  __Pyx_GOTREF(__pyx_t_1);
21956  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21957  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21958  __Pyx_GOTREF(__pyx_t_5);
21959  __pyx_t_8 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21960  __Pyx_GOTREF(__pyx_t_8);
21961  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21962  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21963  __Pyx_GOTREF(__pyx_t_5);
21964  __pyx_t_9 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21965  __Pyx_GOTREF(__pyx_t_9);
21966  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21967  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21968  __Pyx_GOTREF(__pyx_t_5);
21969  __pyx_t_10 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21970  __Pyx_GOTREF(__pyx_t_10);
21971  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21972  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21973  __Pyx_GOTREF(__pyx_t_5);
21974  __pyx_t_11 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21975  __Pyx_GOTREF(__pyx_t_11);
21976  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21977  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21978  __Pyx_GOTREF(__pyx_t_5);
21979  __pyx_t_12 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21980  __Pyx_GOTREF(__pyx_t_12);
21981  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21982  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21983  __Pyx_GOTREF(__pyx_t_5);
21984  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21985  __Pyx_GOTREF(__pyx_t_13);
21986  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21987  __Pyx_GOTREF(__pyx_t_14);
21988  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21989  __Pyx_GOTREF(__pyx_t_15);
21990  __pyx_t_16 = NULL;
21991  __pyx_t_17 = 0;
21992  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
21993  __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_7);
21994  if (likely(__pyx_t_16)) {
21995  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
21996  __Pyx_INCREF(__pyx_t_16);
21997  __Pyx_INCREF(function);
21998  __Pyx_DECREF_SET(__pyx_t_7, function);
21999  __pyx_t_17 = 1;
22000  }
22001  }
22002  __pyx_t_18 = PyTuple_New(11+__pyx_t_17); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22003  __Pyx_GOTREF(__pyx_t_18);
22004  if (__pyx_t_16) {
22005  __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL;
22006  }
22007  __Pyx_INCREF(__pyx_v_x1);
22008  __Pyx_GIVEREF(__pyx_v_x1);
22009  PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_x1);
22010  __Pyx_GIVEREF(__pyx_t_1);
22011  PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_1);
22012  __Pyx_GIVEREF(__pyx_t_8);
22013  PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_t_8);
22014  __Pyx_GIVEREF(__pyx_t_9);
22015  PyTuple_SET_ITEM(__pyx_t_18, 3+__pyx_t_17, __pyx_t_9);
22016  __Pyx_GIVEREF(__pyx_t_10);
22017  PyTuple_SET_ITEM(__pyx_t_18, 4+__pyx_t_17, __pyx_t_10);
22018  __Pyx_GIVEREF(__pyx_t_11);
22019  PyTuple_SET_ITEM(__pyx_t_18, 5+__pyx_t_17, __pyx_t_11);
22020  __Pyx_GIVEREF(__pyx_t_12);
22021  PyTuple_SET_ITEM(__pyx_t_18, 6+__pyx_t_17, __pyx_t_12);
22022  __Pyx_GIVEREF(__pyx_t_5);
22023  PyTuple_SET_ITEM(__pyx_t_18, 7+__pyx_t_17, __pyx_t_5);
22024  __Pyx_GIVEREF(__pyx_t_13);
22025  PyTuple_SET_ITEM(__pyx_t_18, 8+__pyx_t_17, __pyx_t_13);
22026  __Pyx_GIVEREF(__pyx_t_14);
22027  PyTuple_SET_ITEM(__pyx_t_18, 9+__pyx_t_17, __pyx_t_14);
22028  __Pyx_GIVEREF(__pyx_t_15);
22029  PyTuple_SET_ITEM(__pyx_t_18, 10+__pyx_t_17, __pyx_t_15);
22030  __pyx_t_1 = 0;
22031  __pyx_t_8 = 0;
22032  __pyx_t_9 = 0;
22033  __pyx_t_10 = 0;
22034  __pyx_t_11 = 0;
22035  __pyx_t_12 = 0;
22036  __pyx_t_5 = 0;
22037  __pyx_t_13 = 0;
22038  __pyx_t_14 = 0;
22039  __pyx_t_15 = 0;
22040  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_18, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22041  __Pyx_GOTREF(__pyx_t_6);
22042  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
22043  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22044  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22045  __Pyx_GOTREF(__pyx_t_7);
22046  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22047  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_7);
22048  __pyx_t_7 = 0;
22049 
22050  /* "WaveTools.pyx":1037
22051  * """
22052  * U=0.
22053  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
22054  * x1 = x-[self.x0, self.y0, self.z0]
22055  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
22056  */
22057  }
22058  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22059 
22060  /* "WaveTools.pyx":1040
22061  * x1 = x-[self.x0, self.y0, self.z0]
22062  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
22063  * return U # <<<<<<<<<<<<<<
22064  *
22065  * def findWindow(self,t):
22066  */
22067  __Pyx_XDECREF(__pyx_r);
22068  __Pyx_INCREF(__pyx_v_U);
22069  __pyx_r = __pyx_v_U;
22070  goto __pyx_L0;
22071 
22072  /* "WaveTools.pyx":1029
22073  * return Eta
22074  *
22075  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
22076  * """x-component of velocity
22077  *
22078  */
22079 
22080  /* function exit code */
22081  __pyx_L1_error:;
22082  __Pyx_XDECREF(__pyx_t_1);
22083  __Pyx_XDECREF(__pyx_t_2);
22084  __Pyx_XDECREF(__pyx_t_5);
22085  __Pyx_XDECREF(__pyx_t_6);
22086  __Pyx_XDECREF(__pyx_t_7);
22087  __Pyx_XDECREF(__pyx_t_8);
22088  __Pyx_XDECREF(__pyx_t_9);
22089  __Pyx_XDECREF(__pyx_t_10);
22090  __Pyx_XDECREF(__pyx_t_11);
22091  __Pyx_XDECREF(__pyx_t_12);
22092  __Pyx_XDECREF(__pyx_t_13);
22093  __Pyx_XDECREF(__pyx_t_14);
22094  __Pyx_XDECREF(__pyx_t_15);
22095  __Pyx_XDECREF(__pyx_t_16);
22096  __Pyx_XDECREF(__pyx_t_18);
22097  __Pyx_AddTraceback("WaveTools.TimeSeries.uDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
22098  __pyx_r = NULL;
22099  __pyx_L0:;
22100  __Pyx_XDECREF(__pyx_v_U);
22101  __Pyx_XDECREF(__pyx_v_ii);
22102  __Pyx_XDECREF(__pyx_v_x1);
22103  __Pyx_XGIVEREF(__pyx_r);
22104  __Pyx_RefNannyFinishContext();
22105  return __pyx_r;
22106 }
22107 
22108 /* "WaveTools.pyx":1042
22109  * return U
22110  *
22111  * def findWindow(self,t): # <<<<<<<<<<<<<<
22112  * term = 1. - self.handover
22113  * if t-self.time[0] >= term*self.Twindow:
22114  */
22115 
22116 /* Python wrapper */
22117 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_7findWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22118 static char __pyx_doc_9WaveTools_10TimeSeries_6findWindow[] = "TimeSeries.findWindow(self, t)";
22119 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_7findWindow = {"findWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_7findWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_6findWindow};
22120 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_7findWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22121  PyObject *__pyx_v_self = 0;
22122  PyObject *__pyx_v_t = 0;
22123  int __pyx_lineno = 0;
22124  const char *__pyx_filename = NULL;
22125  int __pyx_clineno = 0;
22126  PyObject *__pyx_r = 0;
22127  __Pyx_RefNannyDeclarations
22128  __Pyx_RefNannySetupContext("findWindow (wrapper)", 0);
22129  {
22130  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_t,0};
22131  PyObject* values[2] = {0,0};
22132  if (unlikely(__pyx_kwds)) {
22133  Py_ssize_t kw_args;
22134  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22135  switch (pos_args) {
22136  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22137  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22138  case 0: break;
22139  default: goto __pyx_L5_argtuple_error;
22140  }
22141  kw_args = PyDict_Size(__pyx_kwds);
22142  switch (pos_args) {
22143  case 0:
22144  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
22145  else goto __pyx_L5_argtuple_error;
22146  case 1:
22147  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22148  else {
22149  __Pyx_RaiseArgtupleInvalid("findWindow", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22150  }
22151  }
22152  if (unlikely(kw_args > 0)) {
22153  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findWindow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22154  }
22155  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
22156  goto __pyx_L5_argtuple_error;
22157  } else {
22158  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22159  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22160  }
22161  __pyx_v_self = values[0];
22162  __pyx_v_t = values[1];
22163  }
22164  goto __pyx_L4_argument_unpacking_done;
22165  __pyx_L5_argtuple_error:;
22166  __Pyx_RaiseArgtupleInvalid("findWindow", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22167  __pyx_L3_error:;
22168  __Pyx_AddTraceback("WaveTools.TimeSeries.findWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22169  __Pyx_RefNannyFinishContext();
22170  return NULL;
22171  __pyx_L4_argument_unpacking_done:;
22172  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_6findWindow(__pyx_self, __pyx_v_self, __pyx_v_t);
22173 
22174  /* function exit code */
22175  __Pyx_RefNannyFinishContext();
22176  return __pyx_r;
22177 }
22178 
22179 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_6findWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_t) {
22180  PyObject *__pyx_v_term = NULL;
22181  PyObject *__pyx_v_Nw = NULL;
22182  PyObject *__pyx_r = NULL;
22183  __Pyx_RefNannyDeclarations
22184  PyObject *__pyx_t_1 = NULL;
22185  PyObject *__pyx_t_2 = NULL;
22186  PyObject *__pyx_t_3 = NULL;
22187  int __pyx_t_4;
22188  PyObject *__pyx_t_5 = NULL;
22189  PyObject *__pyx_t_6 = NULL;
22190  PyObject *__pyx_t_7 = NULL;
22191  int __pyx_lineno = 0;
22192  const char *__pyx_filename = NULL;
22193  int __pyx_clineno = 0;
22194  __Pyx_RefNannySetupContext("findWindow", 0);
22195 
22196  /* "WaveTools.pyx":1043
22197  *
22198  * def findWindow(self,t):
22199  * term = 1. - self.handover # <<<<<<<<<<<<<<
22200  * if t-self.time[0] >= term*self.Twindow:
22201  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22202  */
22203  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22204  __Pyx_GOTREF(__pyx_t_1);
22205  __pyx_t_2 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_1, 1., 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22206  __Pyx_GOTREF(__pyx_t_2);
22207  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22208  __pyx_v_term = __pyx_t_2;
22209  __pyx_t_2 = 0;
22210 
22211  /* "WaveTools.pyx":1044
22212  * def findWindow(self,t):
22213  * term = 1. - self.handover
22214  * if t-self.time[0] >= term*self.Twindow: # <<<<<<<<<<<<<<
22215  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22216  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22217  */
22218  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22219  __Pyx_GOTREF(__pyx_t_2);
22220  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22221  __Pyx_GOTREF(__pyx_t_1);
22222  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22223  __pyx_t_2 = PyNumber_Subtract(__pyx_v_t, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22224  __Pyx_GOTREF(__pyx_t_2);
22225  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22226  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22227  __Pyx_GOTREF(__pyx_t_1);
22228  __pyx_t_3 = PyNumber_Multiply(__pyx_v_term, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22229  __Pyx_GOTREF(__pyx_t_3);
22230  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22231  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22232  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22233  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22234  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22235  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22236  if (__pyx_t_4) {
22237 
22238  /* "WaveTools.pyx":1045
22239  * term = 1. - self.handover
22240  * if t-self.time[0] >= term*self.Twindow:
22241  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1) # <<<<<<<<<<<<<<
22242  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22243  * Nw-=1
22244  */
22245  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22246  __Pyx_GOTREF(__pyx_t_1);
22247  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22248  __Pyx_GOTREF(__pyx_t_3);
22249  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22250  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22251  __Pyx_GOTREF(__pyx_t_1);
22252  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22253  __Pyx_GOTREF(__pyx_t_2);
22254  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22255  __pyx_t_1 = PyNumber_Subtract(__pyx_v_t, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22256  __Pyx_GOTREF(__pyx_t_1);
22257  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22258  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22259  __Pyx_GOTREF(__pyx_t_2);
22260  __pyx_t_5 = PyNumber_Multiply(__pyx_v_term, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22261  __Pyx_GOTREF(__pyx_t_5);
22262  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22263  __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22264  __Pyx_GOTREF(__pyx_t_2);
22265  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22266  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
22267  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22268  __Pyx_GOTREF(__pyx_t_5);
22269  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22270  __Pyx_GOTREF(__pyx_t_1);
22271  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22272  __Pyx_GOTREF(__pyx_t_6);
22273  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22274  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22275  __Pyx_GOTREF(__pyx_t_1);
22276  __pyx_t_7 = PyNumber_Multiply(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22277  __Pyx_GOTREF(__pyx_t_7);
22278  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22279  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22280  __pyx_t_1 = PyNumber_Subtract(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22281  __Pyx_GOTREF(__pyx_t_1);
22282  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
22283  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22284  __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22285  __Pyx_GOTREF(__pyx_t_7);
22286  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22287  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22288  __pyx_t_1 = PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22289  __Pyx_GOTREF(__pyx_t_1);
22290  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22291  __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22292  __Pyx_GOTREF(__pyx_t_7);
22293  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22294  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22295  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22296  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22297  if (__pyx_t_4) {
22298  __Pyx_INCREF(__pyx_t_3);
22299  __pyx_t_1 = __pyx_t_3;
22300  } else {
22301  __Pyx_INCREF(__pyx_t_7);
22302  __pyx_t_1 = __pyx_t_7;
22303  }
22304  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22305  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22306  __pyx_t_3 = __pyx_t_1;
22307  __Pyx_INCREF(__pyx_t_3);
22308  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22309  __pyx_v_Nw = __pyx_t_3;
22310  __pyx_t_3 = 0;
22311 
22312  /* "WaveTools.pyx":1046
22313  * if t-self.time[0] >= term*self.Twindow:
22314  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22315  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]: # <<<<<<<<<<<<<<
22316  * Nw-=1
22317  * else:
22318  */
22319  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22320  __Pyx_GOTREF(__pyx_t_3);
22321  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22322  __Pyx_GOTREF(__pyx_t_1);
22323  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22324  __pyx_t_3 = PyNumber_Subtract(__pyx_v_t, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22325  __Pyx_GOTREF(__pyx_t_3);
22326  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22327  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_handover); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22328  __Pyx_GOTREF(__pyx_t_1);
22329  __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_Nw, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22330  __Pyx_GOTREF(__pyx_t_7);
22331  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22332  __Pyx_GOTREF(__pyx_t_2);
22333  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22334  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22335  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22336  __Pyx_GOTREF(__pyx_t_7);
22337  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22338  __Pyx_GOTREF(__pyx_t_1);
22339  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22340  __pyx_t_7 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22341  __Pyx_GOTREF(__pyx_t_7);
22342  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22343  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22344  __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22345  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22346  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22347  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22348  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22349  if (__pyx_t_4) {
22350 
22351  /* "WaveTools.pyx":1047
22352  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22353  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22354  * Nw-=1 # <<<<<<<<<<<<<<
22355  * else:
22356  * Nw = 0
22357  */
22358  __pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_v_Nw, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22359  __Pyx_GOTREF(__pyx_t_1);
22360  __Pyx_DECREF_SET(__pyx_v_Nw, __pyx_t_1);
22361  __pyx_t_1 = 0;
22362 
22363  /* "WaveTools.pyx":1046
22364  * if t-self.time[0] >= term*self.Twindow:
22365  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22366  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]: # <<<<<<<<<<<<<<
22367  * Nw-=1
22368  * else:
22369  */
22370  }
22371 
22372  /* "WaveTools.pyx":1044
22373  * def findWindow(self,t):
22374  * term = 1. - self.handover
22375  * if t-self.time[0] >= term*self.Twindow: # <<<<<<<<<<<<<<
22376  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22377  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22378  */
22379  goto __pyx_L3;
22380  }
22381 
22382  /* "WaveTools.pyx":1049
22383  * Nw-=1
22384  * else:
22385  * Nw = 0 # <<<<<<<<<<<<<<
22386  * return Nw
22387  *
22388  */
22389  /*else*/ {
22390  __Pyx_INCREF(__pyx_int_0);
22391  __pyx_v_Nw = __pyx_int_0;
22392  }
22393  __pyx_L3:;
22394 
22395  /* "WaveTools.pyx":1050
22396  * else:
22397  * Nw = 0
22398  * return Nw # <<<<<<<<<<<<<<
22399  *
22400  * def etaWindow(self, x, t):
22401  */
22402  __Pyx_XDECREF(__pyx_r);
22403  __Pyx_INCREF(__pyx_v_Nw);
22404  __pyx_r = __pyx_v_Nw;
22405  goto __pyx_L0;
22406 
22407  /* "WaveTools.pyx":1042
22408  * return U
22409  *
22410  * def findWindow(self,t): # <<<<<<<<<<<<<<
22411  * term = 1. - self.handover
22412  * if t-self.time[0] >= term*self.Twindow:
22413  */
22414 
22415  /* function exit code */
22416  __pyx_L1_error:;
22417  __Pyx_XDECREF(__pyx_t_1);
22418  __Pyx_XDECREF(__pyx_t_2);
22419  __Pyx_XDECREF(__pyx_t_3);
22420  __Pyx_XDECREF(__pyx_t_5);
22421  __Pyx_XDECREF(__pyx_t_6);
22422  __Pyx_XDECREF(__pyx_t_7);
22423  __Pyx_AddTraceback("WaveTools.TimeSeries.findWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22424  __pyx_r = NULL;
22425  __pyx_L0:;
22426  __Pyx_XDECREF(__pyx_v_term);
22427  __Pyx_XDECREF(__pyx_v_Nw);
22428  __Pyx_XGIVEREF(__pyx_r);
22429  __Pyx_RefNannyFinishContext();
22430  return __pyx_r;
22431 }
22432 
22433 /* "WaveTools.pyx":1052
22434  * return Nw
22435  *
22436  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
22437  * """Free surface displacement
22438  * :param x: floating point x coordinate
22439  */
22440 
22441 /* Python wrapper */
22442 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_9etaWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22443 static char __pyx_doc_9WaveTools_10TimeSeries_8etaWindow[] = "TimeSeries.etaWindow(self, x, t)\nFree surface displacement\n :param x: floating point x coordinate\n :param t: time";
22444 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_9etaWindow = {"etaWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_9etaWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_8etaWindow};
22445 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_9etaWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22446  PyObject *__pyx_v_self = 0;
22447  PyObject *__pyx_v_x = 0;
22448  PyObject *__pyx_v_t = 0;
22449  int __pyx_lineno = 0;
22450  const char *__pyx_filename = NULL;
22451  int __pyx_clineno = 0;
22452  PyObject *__pyx_r = 0;
22453  __Pyx_RefNannyDeclarations
22454  __Pyx_RefNannySetupContext("etaWindow (wrapper)", 0);
22455  {
22456  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
22457  PyObject* values[3] = {0,0,0};
22458  if (unlikely(__pyx_kwds)) {
22459  Py_ssize_t kw_args;
22460  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22461  switch (pos_args) {
22462  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22463  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22464  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22465  case 0: break;
22466  default: goto __pyx_L5_argtuple_error;
22467  }
22468  kw_args = PyDict_Size(__pyx_kwds);
22469  switch (pos_args) {
22470  case 0:
22471  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
22472  else goto __pyx_L5_argtuple_error;
22473  case 1:
22474  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
22475  else {
22476  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22477  }
22478  case 2:
22479  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22480  else {
22481  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22482  }
22483  }
22484  if (unlikely(kw_args > 0)) {
22485  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "etaWindow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22486  }
22487  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
22488  goto __pyx_L5_argtuple_error;
22489  } else {
22490  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22491  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22492  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22493  }
22494  __pyx_v_self = values[0];
22495  __pyx_v_x = values[1];
22496  __pyx_v_t = values[2];
22497  }
22498  goto __pyx_L4_argument_unpacking_done;
22499  __pyx_L5_argtuple_error:;
22500  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22501  __pyx_L3_error:;
22502  __Pyx_AddTraceback("WaveTools.TimeSeries.etaWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22503  __Pyx_RefNannyFinishContext();
22504  return NULL;
22505  __pyx_L4_argument_unpacking_done:;
22506  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_8etaWindow(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
22507 
22508  /* function exit code */
22509  __Pyx_RefNannyFinishContext();
22510  return __pyx_r;
22511 }
22512 
22513 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_8etaWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
22514  PyObject *__pyx_v_Nw = NULL;
22515  PyObject *__pyx_v_ai = NULL;
22516  PyObject *__pyx_v_omega = NULL;
22517  PyObject *__pyx_v_phi = NULL;
22518  PyObject *__pyx_v_kDir = NULL;
22519  PyObject *__pyx_v_t0 = NULL;
22520  PyObject *__pyx_v_Eta = NULL;
22521  PyObject *__pyx_v_ii = NULL;
22522  PyObject *__pyx_v_x1 = NULL;
22523  PyObject *__pyx_r = NULL;
22524  __Pyx_RefNannyDeclarations
22525  PyObject *__pyx_t_1 = NULL;
22526  PyObject *__pyx_t_2 = NULL;
22527  PyObject *__pyx_t_3 = NULL;
22528  PyObject *__pyx_t_4 = NULL;
22529  Py_ssize_t __pyx_t_5;
22530  PyObject *(*__pyx_t_6)(PyObject *);
22531  PyObject *__pyx_t_7 = NULL;
22532  PyObject *__pyx_t_8 = NULL;
22533  PyObject *__pyx_t_9 = NULL;
22534  PyObject *__pyx_t_10 = NULL;
22535  PyObject *__pyx_t_11 = NULL;
22536  Py_ssize_t __pyx_t_12;
22537  PyObject *__pyx_t_13 = NULL;
22538  int __pyx_lineno = 0;
22539  const char *__pyx_filename = NULL;
22540  int __pyx_clineno = 0;
22541  __Pyx_RefNannySetupContext("etaWindow", 0);
22542 
22543  /* "WaveTools.pyx":1056
22544  * :param x: floating point x coordinate
22545  * :param t: time"""
22546  * Nw = self.findWindow(t) # <<<<<<<<<<<<<<
22547  * ai = self.decompose_window[Nw][1]
22548  * omega = self.decompose_window[Nw][0]
22549  */
22550  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_findWindow); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22551  __Pyx_GOTREF(__pyx_t_2);
22552  __pyx_t_3 = NULL;
22553  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
22554  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
22555  if (likely(__pyx_t_3)) {
22556  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
22557  __Pyx_INCREF(__pyx_t_3);
22558  __Pyx_INCREF(function);
22559  __Pyx_DECREF_SET(__pyx_t_2, function);
22560  }
22561  }
22562  if (!__pyx_t_3) {
22563  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22564  __Pyx_GOTREF(__pyx_t_1);
22565  } else {
22566  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22567  __Pyx_GOTREF(__pyx_t_4);
22568  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
22569  __Pyx_INCREF(__pyx_v_t);
22570  __Pyx_GIVEREF(__pyx_v_t);
22571  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_t);
22572  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22573  __Pyx_GOTREF(__pyx_t_1);
22574  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22575  }
22576  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22577  __pyx_v_Nw = __pyx_t_1;
22578  __pyx_t_1 = 0;
22579 
22580  /* "WaveTools.pyx":1057
22581  * :param t: time"""
22582  * Nw = self.findWindow(t)
22583  * ai = self.decompose_window[Nw][1] # <<<<<<<<<<<<<<
22584  * omega = self.decompose_window[Nw][0]
22585  * phi = self.decompose_window[Nw][2]
22586  */
22587  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22588  __Pyx_GOTREF(__pyx_t_1);
22589  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22590  __Pyx_GOTREF(__pyx_t_2);
22591  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22592  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22593  __Pyx_GOTREF(__pyx_t_1);
22594  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22595  __pyx_v_ai = __pyx_t_1;
22596  __pyx_t_1 = 0;
22597 
22598  /* "WaveTools.pyx":1058
22599  * Nw = self.findWindow(t)
22600  * ai = self.decompose_window[Nw][1]
22601  * omega = self.decompose_window[Nw][0] # <<<<<<<<<<<<<<
22602  * phi = self.decompose_window[Nw][2]
22603  * kDir = self.decompose_window[Nw][4]
22604  */
22605  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22606  __Pyx_GOTREF(__pyx_t_1);
22607  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22608  __Pyx_GOTREF(__pyx_t_2);
22609  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22610  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22611  __Pyx_GOTREF(__pyx_t_1);
22612  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22613  __pyx_v_omega = __pyx_t_1;
22614  __pyx_t_1 = 0;
22615 
22616  /* "WaveTools.pyx":1059
22617  * ai = self.decompose_window[Nw][1]
22618  * omega = self.decompose_window[Nw][0]
22619  * phi = self.decompose_window[Nw][2] # <<<<<<<<<<<<<<
22620  * kDir = self.decompose_window[Nw][4]
22621  * t0 = self.windows_rec[Nw][0,0]
22622  */
22623  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22624  __Pyx_GOTREF(__pyx_t_1);
22625  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22626  __Pyx_GOTREF(__pyx_t_2);
22627  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22628  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22629  __Pyx_GOTREF(__pyx_t_1);
22630  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22631  __pyx_v_phi = __pyx_t_1;
22632  __pyx_t_1 = 0;
22633 
22634  /* "WaveTools.pyx":1060
22635  * omega = self.decompose_window[Nw][0]
22636  * phi = self.decompose_window[Nw][2]
22637  * kDir = self.decompose_window[Nw][4] # <<<<<<<<<<<<<<
22638  * t0 = self.windows_rec[Nw][0,0]
22639  * Eta=0.
22640  */
22641  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22642  __Pyx_GOTREF(__pyx_t_1);
22643  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22644  __Pyx_GOTREF(__pyx_t_2);
22645  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22646  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22647  __Pyx_GOTREF(__pyx_t_1);
22648  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22649  __pyx_v_kDir = __pyx_t_1;
22650  __pyx_t_1 = 0;
22651 
22652  /* "WaveTools.pyx":1061
22653  * phi = self.decompose_window[Nw][2]
22654  * kDir = self.decompose_window[Nw][4]
22655  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
22656  * Eta=0.
22657  * for ii in range(0,self.Nf):
22658  */
22659  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22660  __Pyx_GOTREF(__pyx_t_1);
22661  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22662  __Pyx_GOTREF(__pyx_t_2);
22663  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22664  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_tuple__123); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22665  __Pyx_GOTREF(__pyx_t_1);
22666  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22667  __pyx_v_t0 = __pyx_t_1;
22668  __pyx_t_1 = 0;
22669 
22670  /* "WaveTools.pyx":1062
22671  * kDir = self.decompose_window[Nw][4]
22672  * t0 = self.windows_rec[Nw][0,0]
22673  * Eta=0. # <<<<<<<<<<<<<<
22674  * for ii in range(0,self.Nf):
22675  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22676  */
22677  __Pyx_INCREF(__pyx_float_0_);
22678  __pyx_v_Eta = __pyx_float_0_;
22679 
22680  /* "WaveTools.pyx":1063
22681  * t0 = self.windows_rec[Nw][0,0]
22682  * Eta=0.
22683  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
22684  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22685  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22686  */
22687  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22688  __Pyx_GOTREF(__pyx_t_1);
22689  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22690  __Pyx_GOTREF(__pyx_t_2);
22691  __Pyx_INCREF(__pyx_int_0);
22692  __Pyx_GIVEREF(__pyx_int_0);
22693  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
22694  __Pyx_GIVEREF(__pyx_t_1);
22695  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
22696  __pyx_t_1 = 0;
22697  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22698  __Pyx_GOTREF(__pyx_t_1);
22699  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22700  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
22701  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
22702  __pyx_t_6 = NULL;
22703  } else {
22704  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22705  __Pyx_GOTREF(__pyx_t_2);
22706  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22707  }
22708  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22709  for (;;) {
22710  if (likely(!__pyx_t_6)) {
22711  if (likely(PyList_CheckExact(__pyx_t_2))) {
22712  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
22713  #if CYTHON_COMPILING_IN_CPYTHON
22714  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22715  #else
22716  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22717  __Pyx_GOTREF(__pyx_t_1);
22718  #endif
22719  } else {
22720  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
22721  #if CYTHON_COMPILING_IN_CPYTHON
22722  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22723  #else
22724  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22725  __Pyx_GOTREF(__pyx_t_1);
22726  #endif
22727  }
22728  } else {
22729  __pyx_t_1 = __pyx_t_6(__pyx_t_2);
22730  if (unlikely(!__pyx_t_1)) {
22731  PyObject* exc_type = PyErr_Occurred();
22732  if (exc_type) {
22733  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
22734  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22735  }
22736  break;
22737  }
22738  __Pyx_GOTREF(__pyx_t_1);
22739  }
22740  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
22741  __pyx_t_1 = 0;
22742 
22743  /* "WaveTools.pyx":1064
22744  * Eta=0.
22745  * for ii in range(0,self.Nf):
22746  * x1 = np.array(x)-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
22747  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22748  * return Eta
22749  */
22750  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22751  __Pyx_GOTREF(__pyx_t_4);
22752  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22753  __Pyx_GOTREF(__pyx_t_3);
22754  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22755  __pyx_t_4 = NULL;
22756  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
22757  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
22758  if (likely(__pyx_t_4)) {
22759  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
22760  __Pyx_INCREF(__pyx_t_4);
22761  __Pyx_INCREF(function);
22762  __Pyx_DECREF_SET(__pyx_t_3, function);
22763  }
22764  }
22765  if (!__pyx_t_4) {
22766  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_x); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22767  __Pyx_GOTREF(__pyx_t_1);
22768  } else {
22769  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22770  __Pyx_GOTREF(__pyx_t_7);
22771  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
22772  __Pyx_INCREF(__pyx_v_x);
22773  __Pyx_GIVEREF(__pyx_v_x);
22774  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_x);
22775  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22776  __Pyx_GOTREF(__pyx_t_1);
22777  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22778  }
22779  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22780  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22781  __Pyx_GOTREF(__pyx_t_3);
22782  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22783  __Pyx_GOTREF(__pyx_t_7);
22784  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22785  __Pyx_GOTREF(__pyx_t_4);
22786  __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22787  __Pyx_GOTREF(__pyx_t_8);
22788  __Pyx_GIVEREF(__pyx_t_3);
22789  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
22790  __Pyx_GIVEREF(__pyx_t_7);
22791  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
22792  __Pyx_GIVEREF(__pyx_t_4);
22793  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);
22794  __pyx_t_3 = 0;
22795  __pyx_t_7 = 0;
22796  __pyx_t_4 = 0;
22797  __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22798  __Pyx_GOTREF(__pyx_t_4);
22799  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22800  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22801  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_4);
22802  __pyx_t_4 = 0;
22803 
22804  /* "WaveTools.pyx":1065
22805  * for ii in range(0,self.Nf):
22806  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22807  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii]) # <<<<<<<<<<<<<<
22808  * return Eta
22809  *
22810  */
22811  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22812  __Pyx_GOTREF(__pyx_t_8);
22813  __pyx_t_1 = PyNumber_Subtract(__pyx_v_t, __pyx_v_t0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22814  __Pyx_GOTREF(__pyx_t_1);
22815  __pyx_t_7 = PyObject_GetItem(__pyx_v_kDir, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22816  __Pyx_GOTREF(__pyx_t_7);
22817  __pyx_t_3 = PyObject_GetItem(__pyx_v_omega, __pyx_v_ii); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22818  __Pyx_GOTREF(__pyx_t_3);
22819  __pyx_t_9 = PyObject_GetItem(__pyx_v_phi, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22820  __Pyx_GOTREF(__pyx_t_9);
22821  __pyx_t_10 = PyObject_GetItem(__pyx_v_ai, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22822  __Pyx_GOTREF(__pyx_t_10);
22823  __pyx_t_11 = NULL;
22824  __pyx_t_12 = 0;
22825  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
22826  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
22827  if (likely(__pyx_t_11)) {
22828  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
22829  __Pyx_INCREF(__pyx_t_11);
22830  __Pyx_INCREF(function);
22831  __Pyx_DECREF_SET(__pyx_t_8, function);
22832  __pyx_t_12 = 1;
22833  }
22834  }
22835  __pyx_t_13 = PyTuple_New(6+__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22836  __Pyx_GOTREF(__pyx_t_13);
22837  if (__pyx_t_11) {
22838  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
22839  }
22840  __Pyx_INCREF(__pyx_v_x1);
22841  __Pyx_GIVEREF(__pyx_v_x1);
22842  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_v_x1);
22843  __Pyx_GIVEREF(__pyx_t_1);
22844  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_1);
22845  __Pyx_GIVEREF(__pyx_t_7);
22846  PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_12, __pyx_t_7);
22847  __Pyx_GIVEREF(__pyx_t_3);
22848  PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_12, __pyx_t_3);
22849  __Pyx_GIVEREF(__pyx_t_9);
22850  PyTuple_SET_ITEM(__pyx_t_13, 4+__pyx_t_12, __pyx_t_9);
22851  __Pyx_GIVEREF(__pyx_t_10);
22852  PyTuple_SET_ITEM(__pyx_t_13, 5+__pyx_t_12, __pyx_t_10);
22853  __pyx_t_1 = 0;
22854  __pyx_t_7 = 0;
22855  __pyx_t_3 = 0;
22856  __pyx_t_9 = 0;
22857  __pyx_t_10 = 0;
22858  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22859  __Pyx_GOTREF(__pyx_t_4);
22860  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
22861  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22862  __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22863  __Pyx_GOTREF(__pyx_t_8);
22864  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22865  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_8);
22866  __pyx_t_8 = 0;
22867 
22868  /* "WaveTools.pyx":1063
22869  * t0 = self.windows_rec[Nw][0,0]
22870  * Eta=0.
22871  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
22872  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22873  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22874  */
22875  }
22876  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22877 
22878  /* "WaveTools.pyx":1066
22879  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22880  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22881  * return Eta # <<<<<<<<<<<<<<
22882  *
22883  * def uWindow(self, x, t):
22884  */
22885  __Pyx_XDECREF(__pyx_r);
22886  __Pyx_INCREF(__pyx_v_Eta);
22887  __pyx_r = __pyx_v_Eta;
22888  goto __pyx_L0;
22889 
22890  /* "WaveTools.pyx":1052
22891  * return Nw
22892  *
22893  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
22894  * """Free surface displacement
22895  * :param x: floating point x coordinate
22896  */
22897 
22898  /* function exit code */
22899  __pyx_L1_error:;
22900  __Pyx_XDECREF(__pyx_t_1);
22901  __Pyx_XDECREF(__pyx_t_2);
22902  __Pyx_XDECREF(__pyx_t_3);
22903  __Pyx_XDECREF(__pyx_t_4);
22904  __Pyx_XDECREF(__pyx_t_7);
22905  __Pyx_XDECREF(__pyx_t_8);
22906  __Pyx_XDECREF(__pyx_t_9);
22907  __Pyx_XDECREF(__pyx_t_10);
22908  __Pyx_XDECREF(__pyx_t_11);
22909  __Pyx_XDECREF(__pyx_t_13);
22910  __Pyx_AddTraceback("WaveTools.TimeSeries.etaWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22911  __pyx_r = NULL;
22912  __pyx_L0:;
22913  __Pyx_XDECREF(__pyx_v_Nw);
22914  __Pyx_XDECREF(__pyx_v_ai);
22915  __Pyx_XDECREF(__pyx_v_omega);
22916  __Pyx_XDECREF(__pyx_v_phi);
22917  __Pyx_XDECREF(__pyx_v_kDir);
22918  __Pyx_XDECREF(__pyx_v_t0);
22919  __Pyx_XDECREF(__pyx_v_Eta);
22920  __Pyx_XDECREF(__pyx_v_ii);
22921  __Pyx_XDECREF(__pyx_v_x1);
22922  __Pyx_XGIVEREF(__pyx_r);
22923  __Pyx_RefNannyFinishContext();
22924  return __pyx_r;
22925 }
22926 
22927 /* "WaveTools.pyx":1068
22928  * return Eta
22929  *
22930  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
22931  * """x-component of velocity
22932  *
22933  */
22934 
22935 /* Python wrapper */
22936 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_11uWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22937 static char __pyx_doc_9WaveTools_10TimeSeries_10uWindow[] = "TimeSeries.uWindow(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
22938 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_11uWindow = {"uWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_11uWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_10uWindow};
22939 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_11uWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22940  PyObject *__pyx_v_self = 0;
22941  PyObject *__pyx_v_x = 0;
22942  PyObject *__pyx_v_t = 0;
22943  int __pyx_lineno = 0;
22944  const char *__pyx_filename = NULL;
22945  int __pyx_clineno = 0;
22946  PyObject *__pyx_r = 0;
22947  __Pyx_RefNannyDeclarations
22948  __Pyx_RefNannySetupContext("uWindow (wrapper)", 0);
22949  {
22950  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
22951  PyObject* values[3] = {0,0,0};
22952  if (unlikely(__pyx_kwds)) {
22953  Py_ssize_t kw_args;
22954  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22955  switch (pos_args) {
22956  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22957  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22958  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22959  case 0: break;
22960  default: goto __pyx_L5_argtuple_error;
22961  }
22962  kw_args = PyDict_Size(__pyx_kwds);
22963  switch (pos_args) {
22964  case 0:
22965  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
22966  else goto __pyx_L5_argtuple_error;
22967  case 1:
22968  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
22969  else {
22970  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22971  }
22972  case 2:
22973  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22974  else {
22975  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22976  }
22977  }
22978  if (unlikely(kw_args > 0)) {
22979  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uWindow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22980  }
22981  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
22982  goto __pyx_L5_argtuple_error;
22983  } else {
22984  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22985  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22986  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22987  }
22988  __pyx_v_self = values[0];
22989  __pyx_v_x = values[1];
22990  __pyx_v_t = values[2];
22991  }
22992  goto __pyx_L4_argument_unpacking_done;
22993  __pyx_L5_argtuple_error:;
22994  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22995  __pyx_L3_error:;
22996  __Pyx_AddTraceback("WaveTools.TimeSeries.uWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22997  __Pyx_RefNannyFinishContext();
22998  return NULL;
22999  __pyx_L4_argument_unpacking_done:;
23000  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_10uWindow(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
23001 
23002  /* function exit code */
23003  __Pyx_RefNannyFinishContext();
23004  return __pyx_r;
23005 }
23006 
23007 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10uWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
23008  PyObject *__pyx_v_Nw = NULL;
23009  PyObject *__pyx_v_ai = NULL;
23010  PyObject *__pyx_v_omega = NULL;
23011  PyObject *__pyx_v_phi = NULL;
23012  PyObject *__pyx_v_kDir = NULL;
23013  PyObject *__pyx_v_ki = NULL;
23014  PyObject *__pyx_v_t0 = NULL;
23015  PyObject *__pyx_v_U = NULL;
23016  PyObject *__pyx_v_ii = NULL;
23017  PyObject *__pyx_v_x1 = NULL;
23018  PyObject *__pyx_r = NULL;
23019  __Pyx_RefNannyDeclarations
23020  PyObject *__pyx_t_1 = NULL;
23021  PyObject *__pyx_t_2 = NULL;
23022  PyObject *__pyx_t_3 = NULL;
23023  PyObject *__pyx_t_4 = NULL;
23024  Py_ssize_t __pyx_t_5;
23025  PyObject *(*__pyx_t_6)(PyObject *);
23026  PyObject *__pyx_t_7 = NULL;
23027  PyObject *__pyx_t_8 = NULL;
23028  PyObject *__pyx_t_9 = NULL;
23029  PyObject *__pyx_t_10 = NULL;
23030  PyObject *__pyx_t_11 = NULL;
23031  PyObject *__pyx_t_12 = NULL;
23032  PyObject *__pyx_t_13 = NULL;
23033  PyObject *__pyx_t_14 = NULL;
23034  PyObject *__pyx_t_15 = NULL;
23035  PyObject *__pyx_t_16 = NULL;
23036  Py_ssize_t __pyx_t_17;
23037  PyObject *__pyx_t_18 = NULL;
23038  int __pyx_lineno = 0;
23039  const char *__pyx_filename = NULL;
23040  int __pyx_clineno = 0;
23041  __Pyx_RefNannySetupContext("uWindow", 0);
23042 
23043  /* "WaveTools.pyx":1075
23044  * :param t: time
23045  * """
23046  * Nw = self.findWindow(t) # <<<<<<<<<<<<<<
23047  * ai = self.decompose_window[Nw][1]
23048  * omega = self.decompose_window[Nw][0]
23049  */
23050  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_findWindow); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23051  __Pyx_GOTREF(__pyx_t_2);
23052  __pyx_t_3 = NULL;
23053  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
23054  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
23055  if (likely(__pyx_t_3)) {
23056  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23057  __Pyx_INCREF(__pyx_t_3);
23058  __Pyx_INCREF(function);
23059  __Pyx_DECREF_SET(__pyx_t_2, function);
23060  }
23061  }
23062  if (!__pyx_t_3) {
23063  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23064  __Pyx_GOTREF(__pyx_t_1);
23065  } else {
23066  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23067  __Pyx_GOTREF(__pyx_t_4);
23068  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
23069  __Pyx_INCREF(__pyx_v_t);
23070  __Pyx_GIVEREF(__pyx_v_t);
23071  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_t);
23072  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23073  __Pyx_GOTREF(__pyx_t_1);
23074  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
23075  }
23076  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23077  __pyx_v_Nw = __pyx_t_1;
23078  __pyx_t_1 = 0;
23079 
23080  /* "WaveTools.pyx":1076
23081  * """
23082  * Nw = self.findWindow(t)
23083  * ai = self.decompose_window[Nw][1] # <<<<<<<<<<<<<<
23084  * omega = self.decompose_window[Nw][0]
23085  * phi = self.decompose_window[Nw][2]
23086  */
23087  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23088  __Pyx_GOTREF(__pyx_t_1);
23089  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23090  __Pyx_GOTREF(__pyx_t_2);
23091  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23092  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23093  __Pyx_GOTREF(__pyx_t_1);
23094  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23095  __pyx_v_ai = __pyx_t_1;
23096  __pyx_t_1 = 0;
23097 
23098  /* "WaveTools.pyx":1077
23099  * Nw = self.findWindow(t)
23100  * ai = self.decompose_window[Nw][1]
23101  * omega = self.decompose_window[Nw][0] # <<<<<<<<<<<<<<
23102  * phi = self.decompose_window[Nw][2]
23103  * kDir = self.decompose_window[Nw][4]
23104  */
23105  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23106  __Pyx_GOTREF(__pyx_t_1);
23107  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23108  __Pyx_GOTREF(__pyx_t_2);
23109  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23110  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23111  __Pyx_GOTREF(__pyx_t_1);
23112  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23113  __pyx_v_omega = __pyx_t_1;
23114  __pyx_t_1 = 0;
23115 
23116  /* "WaveTools.pyx":1078
23117  * ai = self.decompose_window[Nw][1]
23118  * omega = self.decompose_window[Nw][0]
23119  * phi = self.decompose_window[Nw][2] # <<<<<<<<<<<<<<
23120  * kDir = self.decompose_window[Nw][4]
23121  * ki = self.decompose_window[Nw][5]
23122  */
23123  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23124  __Pyx_GOTREF(__pyx_t_1);
23125  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23126  __Pyx_GOTREF(__pyx_t_2);
23127  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23128  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23129  __Pyx_GOTREF(__pyx_t_1);
23130  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23131  __pyx_v_phi = __pyx_t_1;
23132  __pyx_t_1 = 0;
23133 
23134  /* "WaveTools.pyx":1079
23135  * omega = self.decompose_window[Nw][0]
23136  * phi = self.decompose_window[Nw][2]
23137  * kDir = self.decompose_window[Nw][4] # <<<<<<<<<<<<<<
23138  * ki = self.decompose_window[Nw][5]
23139  * t0 = self.windows_rec[Nw][0,0]
23140  */
23141  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23142  __Pyx_GOTREF(__pyx_t_1);
23143  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23144  __Pyx_GOTREF(__pyx_t_2);
23145  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23146  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23147  __Pyx_GOTREF(__pyx_t_1);
23148  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23149  __pyx_v_kDir = __pyx_t_1;
23150  __pyx_t_1 = 0;
23151 
23152  /* "WaveTools.pyx":1080
23153  * phi = self.decompose_window[Nw][2]
23154  * kDir = self.decompose_window[Nw][4]
23155  * ki = self.decompose_window[Nw][5] # <<<<<<<<<<<<<<
23156  * t0 = self.windows_rec[Nw][0,0]
23157  * U=0.
23158  */
23159  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23160  __Pyx_GOTREF(__pyx_t_1);
23161  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23162  __Pyx_GOTREF(__pyx_t_2);
23163  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23164  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23165  __Pyx_GOTREF(__pyx_t_1);
23166  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23167  __pyx_v_ki = __pyx_t_1;
23168  __pyx_t_1 = 0;
23169 
23170  /* "WaveTools.pyx":1081
23171  * kDir = self.decompose_window[Nw][4]
23172  * ki = self.decompose_window[Nw][5]
23173  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
23174  * U=0.
23175  * for ii in range(0,self.Nf):
23176  */
23177  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23178  __Pyx_GOTREF(__pyx_t_1);
23179  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23180  __Pyx_GOTREF(__pyx_t_2);
23181  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23182  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_tuple__124); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23183  __Pyx_GOTREF(__pyx_t_1);
23184  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23185  __pyx_v_t0 = __pyx_t_1;
23186  __pyx_t_1 = 0;
23187 
23188  /* "WaveTools.pyx":1082
23189  * ki = self.decompose_window[Nw][5]
23190  * t0 = self.windows_rec[Nw][0,0]
23191  * U=0. # <<<<<<<<<<<<<<
23192  * for ii in range(0,self.Nf):
23193  * x1 = x-[self.x0, self.y0, self.z0]
23194  */
23195  __Pyx_INCREF(__pyx_float_0_);
23196  __pyx_v_U = __pyx_float_0_;
23197 
23198  /* "WaveTools.pyx":1083
23199  * t0 = self.windows_rec[Nw][0,0]
23200  * U=0.
23201  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
23202  * x1 = x-[self.x0, self.y0, self.z0]
23203  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23204  */
23205  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23206  __Pyx_GOTREF(__pyx_t_1);
23207  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23208  __Pyx_GOTREF(__pyx_t_2);
23209  __Pyx_INCREF(__pyx_int_0);
23210  __Pyx_GIVEREF(__pyx_int_0);
23211  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
23212  __Pyx_GIVEREF(__pyx_t_1);
23213  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
23214  __pyx_t_1 = 0;
23215  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23216  __Pyx_GOTREF(__pyx_t_1);
23217  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23218  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
23219  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
23220  __pyx_t_6 = NULL;
23221  } else {
23222  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23223  __Pyx_GOTREF(__pyx_t_2);
23224  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23225  }
23226  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23227  for (;;) {
23228  if (likely(!__pyx_t_6)) {
23229  if (likely(PyList_CheckExact(__pyx_t_2))) {
23230  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
23231  #if CYTHON_COMPILING_IN_CPYTHON
23232  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23233  #else
23234  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23235  __Pyx_GOTREF(__pyx_t_1);
23236  #endif
23237  } else {
23238  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
23239  #if CYTHON_COMPILING_IN_CPYTHON
23240  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23241  #else
23242  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23243  __Pyx_GOTREF(__pyx_t_1);
23244  #endif
23245  }
23246  } else {
23247  __pyx_t_1 = __pyx_t_6(__pyx_t_2);
23248  if (unlikely(!__pyx_t_1)) {
23249  PyObject* exc_type = PyErr_Occurred();
23250  if (exc_type) {
23251  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
23252  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23253  }
23254  break;
23255  }
23256  __Pyx_GOTREF(__pyx_t_1);
23257  }
23258  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
23259  __pyx_t_1 = 0;
23260 
23261  /* "WaveTools.pyx":1084
23262  * U=0.
23263  * for ii in range(0,self.Nf):
23264  * x1 = x-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
23265  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23266  * return U
23267  */
23268  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23269  __Pyx_GOTREF(__pyx_t_1);
23270  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23271  __Pyx_GOTREF(__pyx_t_4);
23272  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23273  __Pyx_GOTREF(__pyx_t_3);
23274  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23275  __Pyx_GOTREF(__pyx_t_7);
23276  __Pyx_GIVEREF(__pyx_t_1);
23277  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
23278  __Pyx_GIVEREF(__pyx_t_4);
23279  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
23280  __Pyx_GIVEREF(__pyx_t_3);
23281  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
23282  __pyx_t_1 = 0;
23283  __pyx_t_4 = 0;
23284  __pyx_t_3 = 0;
23285  __pyx_t_3 = PyNumber_Subtract(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23286  __Pyx_GOTREF(__pyx_t_3);
23287  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23288  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_3);
23289  __pyx_t_3 = 0;
23290 
23291  /* "WaveTools.pyx":1085
23292  * for ii in range(0,self.Nf):
23293  * x1 = x-[self.x0, self.y0, self.z0]
23294  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
23295  * return U
23296  *
23297  */
23298  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23299  __Pyx_GOTREF(__pyx_t_7);
23300  __pyx_t_4 = PyNumber_Subtract(__pyx_v_t, __pyx_v_t0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23301  __Pyx_GOTREF(__pyx_t_4);
23302  __pyx_t_1 = PyObject_GetItem(__pyx_v_kDir, __pyx_v_ii); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23303  __Pyx_GOTREF(__pyx_t_1);
23304  __pyx_t_8 = PyObject_GetItem(__pyx_v_ki, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23305  __Pyx_GOTREF(__pyx_t_8);
23306  __pyx_t_9 = PyObject_GetItem(__pyx_v_omega, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23307  __Pyx_GOTREF(__pyx_t_9);
23308  __pyx_t_10 = PyObject_GetItem(__pyx_v_phi, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23309  __Pyx_GOTREF(__pyx_t_10);
23310  __pyx_t_11 = PyObject_GetItem(__pyx_v_ai, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23311  __Pyx_GOTREF(__pyx_t_11);
23312  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23313  __Pyx_GOTREF(__pyx_t_12);
23314  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23315  __Pyx_GOTREF(__pyx_t_13);
23316  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23317  __Pyx_GOTREF(__pyx_t_14);
23318  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23319  __Pyx_GOTREF(__pyx_t_15);
23320  __pyx_t_16 = NULL;
23321  __pyx_t_17 = 0;
23322  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
23323  __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_7);
23324  if (likely(__pyx_t_16)) {
23325  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
23326  __Pyx_INCREF(__pyx_t_16);
23327  __Pyx_INCREF(function);
23328  __Pyx_DECREF_SET(__pyx_t_7, function);
23329  __pyx_t_17 = 1;
23330  }
23331  }
23332  __pyx_t_18 = PyTuple_New(11+__pyx_t_17); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23333  __Pyx_GOTREF(__pyx_t_18);
23334  if (__pyx_t_16) {
23335  __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL;
23336  }
23337  __Pyx_INCREF(__pyx_v_x1);
23338  __Pyx_GIVEREF(__pyx_v_x1);
23339  PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_x1);
23340  __Pyx_GIVEREF(__pyx_t_4);
23341  PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_4);
23342  __Pyx_GIVEREF(__pyx_t_1);
23343  PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_t_1);
23344  __Pyx_GIVEREF(__pyx_t_8);
23345  PyTuple_SET_ITEM(__pyx_t_18, 3+__pyx_t_17, __pyx_t_8);
23346  __Pyx_GIVEREF(__pyx_t_9);
23347  PyTuple_SET_ITEM(__pyx_t_18, 4+__pyx_t_17, __pyx_t_9);
23348  __Pyx_GIVEREF(__pyx_t_10);
23349  PyTuple_SET_ITEM(__pyx_t_18, 5+__pyx_t_17, __pyx_t_10);
23350  __Pyx_GIVEREF(__pyx_t_11);
23351  PyTuple_SET_ITEM(__pyx_t_18, 6+__pyx_t_17, __pyx_t_11);
23352  __Pyx_GIVEREF(__pyx_t_12);
23353  PyTuple_SET_ITEM(__pyx_t_18, 7+__pyx_t_17, __pyx_t_12);
23354  __Pyx_GIVEREF(__pyx_t_13);
23355  PyTuple_SET_ITEM(__pyx_t_18, 8+__pyx_t_17, __pyx_t_13);
23356  __Pyx_GIVEREF(__pyx_t_14);
23357  PyTuple_SET_ITEM(__pyx_t_18, 9+__pyx_t_17, __pyx_t_14);
23358  __Pyx_GIVEREF(__pyx_t_15);
23359  PyTuple_SET_ITEM(__pyx_t_18, 10+__pyx_t_17, __pyx_t_15);
23360  __pyx_t_4 = 0;
23361  __pyx_t_1 = 0;
23362  __pyx_t_8 = 0;
23363  __pyx_t_9 = 0;
23364  __pyx_t_10 = 0;
23365  __pyx_t_11 = 0;
23366  __pyx_t_12 = 0;
23367  __pyx_t_13 = 0;
23368  __pyx_t_14 = 0;
23369  __pyx_t_15 = 0;
23370  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23371  __Pyx_GOTREF(__pyx_t_3);
23372  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
23373  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23374  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23375  __Pyx_GOTREF(__pyx_t_7);
23376  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23377  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_7);
23378  __pyx_t_7 = 0;
23379 
23380  /* "WaveTools.pyx":1083
23381  * t0 = self.windows_rec[Nw][0,0]
23382  * U=0.
23383  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
23384  * x1 = x-[self.x0, self.y0, self.z0]
23385  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23386  */
23387  }
23388  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23389 
23390  /* "WaveTools.pyx":1086
23391  * x1 = x-[self.x0, self.y0, self.z0]
23392  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23393  * return U # <<<<<<<<<<<<<<
23394  *
23395  *
23396  */
23397  __Pyx_XDECREF(__pyx_r);
23398  __Pyx_INCREF(__pyx_v_U);
23399  __pyx_r = __pyx_v_U;
23400  goto __pyx_L0;
23401 
23402  /* "WaveTools.pyx":1068
23403  * return Eta
23404  *
23405  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
23406  * """x-component of velocity
23407  *
23408  */
23409 
23410  /* function exit code */
23411  __pyx_L1_error:;
23412  __Pyx_XDECREF(__pyx_t_1);
23413  __Pyx_XDECREF(__pyx_t_2);
23414  __Pyx_XDECREF(__pyx_t_3);
23415  __Pyx_XDECREF(__pyx_t_4);
23416  __Pyx_XDECREF(__pyx_t_7);
23417  __Pyx_XDECREF(__pyx_t_8);
23418  __Pyx_XDECREF(__pyx_t_9);
23419  __Pyx_XDECREF(__pyx_t_10);
23420  __Pyx_XDECREF(__pyx_t_11);
23421  __Pyx_XDECREF(__pyx_t_12);
23422  __Pyx_XDECREF(__pyx_t_13);
23423  __Pyx_XDECREF(__pyx_t_14);
23424  __Pyx_XDECREF(__pyx_t_15);
23425  __Pyx_XDECREF(__pyx_t_16);
23426  __Pyx_XDECREF(__pyx_t_18);
23427  __Pyx_AddTraceback("WaveTools.TimeSeries.uWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
23428  __pyx_r = NULL;
23429  __pyx_L0:;
23430  __Pyx_XDECREF(__pyx_v_Nw);
23431  __Pyx_XDECREF(__pyx_v_ai);
23432  __Pyx_XDECREF(__pyx_v_omega);
23433  __Pyx_XDECREF(__pyx_v_phi);
23434  __Pyx_XDECREF(__pyx_v_kDir);
23435  __Pyx_XDECREF(__pyx_v_ki);
23436  __Pyx_XDECREF(__pyx_v_t0);
23437  __Pyx_XDECREF(__pyx_v_U);
23438  __Pyx_XDECREF(__pyx_v_ii);
23439  __Pyx_XDECREF(__pyx_v_x1);
23440  __Pyx_XGIVEREF(__pyx_r);
23441  __Pyx_RefNannyFinishContext();
23442  return __pyx_r;
23443 }
23444 
23445 static PyMethodDef __pyx_methods[] = {
23446  {0, 0, 0, 0}
23447 };
23448 
23449 #if PY_MAJOR_VERSION >= 3
23450 static struct PyModuleDef __pyx_moduledef = {
23451  #if PY_VERSION_HEX < 0x03020000
23452  { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
23453  #else
23454  PyModuleDef_HEAD_INIT,
23455  #endif
23456  "WaveTools",
23457  __pyx_k_Tools_for_working_with_water_wav, /* m_doc */
23458  -1, /* m_size */
23459  __pyx_methods /* m_methods */,
23460  NULL, /* m_reload */
23461  NULL, /* m_traverse */
23462  NULL, /* m_clear */
23463  NULL /* m_free */
23464 };
23465 #endif
23466 
23467 static __Pyx_StringTabEntry __pyx_string_tab[] = {
23468  {&__pyx_n_s_B, __pyx_k_B, sizeof(__pyx_k_B), 0, 0, 1, 1},
23469  {&__pyx_n_s_Bcoeff, __pyx_k_Bcoeff, sizeof(__pyx_k_Bcoeff), 0, 0, 1, 1},
23470  {&__pyx_n_s_Cutoff, __pyx_k_Cutoff, sizeof(__pyx_k_Cutoff), 0, 0, 1, 1},
23471  {&__pyx_n_s_DirectionalWaves, __pyx_k_DirectionalWaves, sizeof(__pyx_k_DirectionalWaves), 0, 0, 1, 1},
23472  {&__pyx_n_s_DirectionalWaves___init, __pyx_k_DirectionalWaves___init, sizeof(__pyx_k_DirectionalWaves___init), 0, 0, 1, 1},
23473  {&__pyx_n_s_DirectionalWaves_eta, __pyx_k_DirectionalWaves_eta, sizeof(__pyx_k_DirectionalWaves_eta), 0, 0, 1, 1},
23474  {&__pyx_n_s_DirectionalWaves_u, __pyx_k_DirectionalWaves_u, sizeof(__pyx_k_DirectionalWaves_u), 0, 0, 1, 1},
23475  {&__pyx_n_s_Eta, __pyx_k_Eta, sizeof(__pyx_k_Eta), 0, 0, 1, 1},
23476  {&__pyx_n_s_Fenton, __pyx_k_Fenton, sizeof(__pyx_k_Fenton), 0, 0, 1, 1},
23477  {&__pyx_n_s_G0, __pyx_k_G0, sizeof(__pyx_k_G0), 0, 0, 1, 1},
23478  {&__pyx_kp_s_Generate_a_monochromatic_wave_tr, __pyx_k_Generate_a_monochromatic_wave_tr, sizeof(__pyx_k_Generate_a_monochromatic_wave_tr), 0, 0, 1, 0},
23479  {&__pyx_kp_s_Generate_a_random_wave_timeserie, __pyx_k_Generate_a_random_wave_timeserie, sizeof(__pyx_k_Generate_a_random_wave_timeserie), 0, 0, 1, 0},
23480  {&__pyx_kp_s_Generate_a_random_wave_timeserie_2, __pyx_k_Generate_a_random_wave_timeserie_2, sizeof(__pyx_k_Generate_a_random_wave_timeserie_2), 0, 0, 1, 0},
23481  {&__pyx_kp_s_Generate_a_time_series_by_using, __pyx_k_Generate_a_time_series_by_using, sizeof(__pyx_k_Generate_a_time_series_by_using), 0, 0, 1, 0},
23482  {&__pyx_kp_s_Generate_approximate_random_wave, __pyx_k_Generate_approximate_random_wave, sizeof(__pyx_k_Generate_approximate_random_wave), 0, 0, 1, 0},
23483  {&__pyx_n_s_HH, __pyx_k_HH, sizeof(__pyx_k_HH), 0, 0, 1, 1},
23484  {&__pyx_n_s_Hs, __pyx_k_Hs, sizeof(__pyx_k_Hs), 0, 0, 1, 1},
23485  {&__pyx_n_s_JONSWAP, __pyx_k_JONSWAP, sizeof(__pyx_k_JONSWAP), 0, 0, 1, 1},
23486  {&__pyx_n_s_K, __pyx_k_K, sizeof(__pyx_k_K), 0, 0, 1, 1},
23487  {&__pyx_n_s_Linear, __pyx_k_Linear, sizeof(__pyx_k_Linear), 0, 0, 1, 1},
23488  {&__pyx_n_s_M, __pyx_k_M, sizeof(__pyx_k_M), 0, 0, 1, 1},
23489  {&__pyx_n_s_MonochromaticWaves, __pyx_k_MonochromaticWaves, sizeof(__pyx_k_MonochromaticWaves), 0, 0, 1, 1},
23490  {&__pyx_n_s_MonochromaticWaves___init, __pyx_k_MonochromaticWaves___init, sizeof(__pyx_k_MonochromaticWaves___init), 0, 0, 1, 1},
23491  {&__pyx_n_s_MonochromaticWaves_eta, __pyx_k_MonochromaticWaves_eta, sizeof(__pyx_k_MonochromaticWaves_eta), 0, 0, 1, 1},
23492  {&__pyx_n_s_MonochromaticWaves_u, __pyx_k_MonochromaticWaves_u, sizeof(__pyx_k_MonochromaticWaves_u), 0, 0, 1, 1},
23493  {&__pyx_n_s_Mtot, __pyx_k_Mtot, sizeof(__pyx_k_Mtot), 0, 0, 1, 1},
23494  {&__pyx_n_s_MultiSpectraRandomWaves, __pyx_k_MultiSpectraRandomWaves, sizeof(__pyx_k_MultiSpectraRandomWaves), 0, 0, 1, 1},
23495  {&__pyx_n_s_MultiSpectraRandomWaves___init, __pyx_k_MultiSpectraRandomWaves___init, sizeof(__pyx_k_MultiSpectraRandomWaves___init), 0, 0, 1, 1},
23496  {&__pyx_n_s_MultiSpectraRandomWaves_eta, __pyx_k_MultiSpectraRandomWaves_eta, sizeof(__pyx_k_MultiSpectraRandomWaves_eta), 0, 0, 1, 1},
23497  {&__pyx_n_s_MultiSpectraRandomWaves_u, __pyx_k_MultiSpectraRandomWaves_u, sizeof(__pyx_k_MultiSpectraRandomWaves_u), 0, 0, 1, 1},
23498  {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1},
23499  {&__pyx_n_s_NN, __pyx_k_NN, sizeof(__pyx_k_NN), 0, 0, 1, 1},
23500  {&__pyx_n_s_NN1, __pyx_k_NN1, sizeof(__pyx_k_NN1), 0, 0, 1, 1},
23501  {&__pyx_n_s_Nall, __pyx_k_Nall, sizeof(__pyx_k_Nall), 0, 0, 1, 1},
23502  {&__pyx_n_s_Nf, __pyx_k_Nf, sizeof(__pyx_k_Nf), 0, 0, 1, 1},
23503  {&__pyx_n_s_Nftemp, __pyx_k_Nftemp, sizeof(__pyx_k_Nftemp), 0, 0, 1, 1},
23504  {&__pyx_n_s_Nspectra, __pyx_k_Nspectra, sizeof(__pyx_k_Nspectra), 0, 0, 1, 1},
23505  {&__pyx_n_s_Nw, __pyx_k_Nw, sizeof(__pyx_k_Nw), 0, 0, 1, 1},
23506  {&__pyx_n_s_Nwaves, __pyx_k_Nwaves, sizeof(__pyx_k_Nwaves), 0, 0, 1, 1},
23507  {&__pyx_n_s_Nwindows, __pyx_k_Nwindows, sizeof(__pyx_k_Nwindows), 0, 0, 1, 1},
23508  {&__pyx_n_s_Overlap, __pyx_k_Overlap, sizeof(__pyx_k_Overlap), 0, 0, 1, 1},
23509  {&__pyx_n_s_PM_mod, __pyx_k_PM_mod, sizeof(__pyx_k_PM_mod), 0, 0, 1, 1},
23510  {&__pyx_n_s_Profiling, __pyx_k_Profiling, sizeof(__pyx_k_Profiling), 0, 0, 1, 1},
23511  {&__pyx_n_s_RandomWaves, __pyx_k_RandomWaves, sizeof(__pyx_k_RandomWaves), 0, 0, 1, 1},
23512  {&__pyx_n_s_RandomWaves___init, __pyx_k_RandomWaves___init, sizeof(__pyx_k_RandomWaves___init), 0, 0, 1, 1},
23513  {&__pyx_n_s_RandomWaves_eta, __pyx_k_RandomWaves_eta, sizeof(__pyx_k_RandomWaves_eta), 0, 0, 1, 1},
23514  {&__pyx_n_s_RandomWaves_u, __pyx_k_RandomWaves_u, sizeof(__pyx_k_RandomWaves_u), 0, 0, 1, 1},
23515  {&__pyx_n_s_Si_Jm, __pyx_k_Si_Jm, sizeof(__pyx_k_Si_Jm), 0, 0, 1, 1},
23516  {&__pyx_n_s_Si_Sp, __pyx_k_Si_Sp, sizeof(__pyx_k_Si_Sp), 0, 0, 1, 1},
23517  {&__pyx_n_s_Sint, __pyx_k_Sint, sizeof(__pyx_k_Sint), 0, 0, 1, 1},
23518  {&__pyx_n_s_SpatialTools, __pyx_k_SpatialTools, sizeof(__pyx_k_SpatialTools), 0, 0, 1, 1},
23519  {&__pyx_n_s_TMA, __pyx_k_TMA, sizeof(__pyx_k_TMA), 0, 0, 1, 1},
23520  {&__pyx_n_s_TimeSeries, __pyx_k_TimeSeries, sizeof(__pyx_k_TimeSeries), 0, 0, 1, 1},
23521  {&__pyx_n_s_TimeSeries___init, __pyx_k_TimeSeries___init, sizeof(__pyx_k_TimeSeries___init), 0, 0, 1, 1},
23522  {&__pyx_n_s_TimeSeries_etaDirect, __pyx_k_TimeSeries_etaDirect, sizeof(__pyx_k_TimeSeries_etaDirect), 0, 0, 1, 1},
23523  {&__pyx_n_s_TimeSeries_etaWindow, __pyx_k_TimeSeries_etaWindow, sizeof(__pyx_k_TimeSeries_etaWindow), 0, 0, 1, 1},
23524  {&__pyx_n_s_TimeSeries_findWindow, __pyx_k_TimeSeries_findWindow, sizeof(__pyx_k_TimeSeries_findWindow), 0, 0, 1, 1},
23525  {&__pyx_n_s_TimeSeries_uDirect, __pyx_k_TimeSeries_uDirect, sizeof(__pyx_k_TimeSeries_uDirect), 0, 0, 1, 1},
23526  {&__pyx_n_s_TimeSeries_uWindow, __pyx_k_TimeSeries_uWindow, sizeof(__pyx_k_TimeSeries_uWindow), 0, 0, 1, 1},
23527  {&__pyx_n_s_Tm, __pyx_k_Tm, sizeof(__pyx_k_Tm), 0, 0, 1, 1},
23528  {&__pyx_n_s_Toverlap, __pyx_k_Toverlap, sizeof(__pyx_k_Toverlap), 0, 0, 1, 1},
23529  {&__pyx_n_s_Tp, __pyx_k_Tp, sizeof(__pyx_k_Tp), 0, 0, 1, 1},
23530  {&__pyx_n_s_Twindow, __pyx_k_Twindow, sizeof(__pyx_k_Twindow), 0, 0, 1, 1},
23531  {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
23532  {&__pyx_n_s_UH, __pyx_k_UH, sizeof(__pyx_k_UH), 0, 0, 1, 1},
23533  {&__pyx_n_s_UV, __pyx_k_UV, sizeof(__pyx_k_UV), 0, 0, 1, 1},
23534  {&__pyx_n_s_Ufenton, __pyx_k_Ufenton, sizeof(__pyx_k_Ufenton), 0, 0, 1, 1},
23535  {&__pyx_n_s_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 0, 1, 1},
23536  {&__pyx_n_s_WaveTools, __pyx_k_WaveTools, sizeof(__pyx_k_WaveTools), 0, 0, 1, 1},
23537  {&__pyx_kp_s_WaveTools_py_Additional_spectral, __pyx_k_WaveTools_py_Additional_spectral, sizeof(__pyx_k_WaveTools_py_Additional_spectral), 0, 0, 1, 0},
23538  {&__pyx_kp_s_WaveTools_py_Additional_spread_p, __pyx_k_WaveTools_py_Additional_spread_p, sizeof(__pyx_k_WaveTools_py_Additional_spread_p), 0, 0, 1, 0},
23539  {&__pyx_kp_s_WaveTools_py_Checking_duration_o, __pyx_k_WaveTools_py_Checking_duration_o, sizeof(__pyx_k_WaveTools_py_Checking_duration_o), 0, 0, 1, 0},
23540  {&__pyx_kp_s_WaveTools_py_Correcting_window_d, __pyx_k_WaveTools_py_Correcting_window_d, sizeof(__pyx_k_WaveTools_py_Correcting_window_d), 0, 0, 1, 0},
23541  {&__pyx_kp_s_WaveTools_py_Cutoff_entry_in_win, __pyx_k_WaveTools_py_Cutoff_entry_in_win, sizeof(__pyx_k_WaveTools_py_Cutoff_entry_in_win), 0, 0, 1, 0},
23542  {&__pyx_kp_s_WaveTools_py_Dictionary_key_Nwav, __pyx_k_WaveTools_py_Dictionary_key_Nwav, sizeof(__pyx_k_WaveTools_py_Dictionary_key_Nwav), 0, 0, 1, 0},
23543  {&__pyx_kp_s_WaveTools_py_Dictionary_key_Tm_m, __pyx_k_WaveTools_py_Dictionary_key_Tm_m, sizeof(__pyx_k_WaveTools_py_Dictionary_key_Tm_m), 0, 0, 1, 0},
23544  {&__pyx_kp_s_WaveTools_py_Dictionary_key_Wind, __pyx_k_WaveTools_py_Dictionary_key_Wind, sizeof(__pyx_k_WaveTools_py_Dictionary_key_Wind), 0, 0, 1, 0},
23545  {&__pyx_kp_s_WaveTools_py_File_s_must_be_give, __pyx_k_WaveTools_py_File_s_must_be_give, sizeof(__pyx_k_WaveTools_py_File_s_must_be_give), 0, 0, 1, 0},
23546  {&__pyx_kp_s_WaveTools_py_Found_not_consisten, __pyx_k_WaveTools_py_Found_not_consisten, sizeof(__pyx_k_WaveTools_py_Found_not_consisten), 0, 0, 1, 0},
23547  {&__pyx_kp_s_WaveTools_py_Location_vector_for, __pyx_k_WaveTools_py_Location_vector_for, sizeof(__pyx_k_WaveTools_py_Location_vector_for), 0, 0, 1, 0},
23548  {&__pyx_kp_s_WaveTools_py_Need_to_define_Ycoe, __pyx_k_WaveTools_py_Need_to_define_Ycoe, sizeof(__pyx_k_WaveTools_py_Need_to_define_Ycoe), 0, 0, 1, 0},
23549  {&__pyx_kp_s_WaveTools_py_No_phase_array_is_g, __pyx_k_WaveTools_py_No_phase_array_is_g, sizeof(__pyx_k_WaveTools_py_No_phase_array_is_g), 0, 0, 1, 0},
23550  {&__pyx_kp_s_WaveTools_py_Not_constant_sampli, __pyx_k_WaveTools_py_Not_constant_sampli, sizeof(__pyx_k_WaveTools_py_Not_constant_sampli), 0, 0, 1, 0},
23551  {&__pyx_kp_s_WaveTools_py_Overlap_entry_in_wi, __pyx_k_WaveTools_py_Overlap_entry_in_wi, sizeof(__pyx_k_WaveTools_py_Overlap_entry_in_wi), 0, 0, 1, 0},
23552  {&__pyx_kp_s_WaveTools_py_Parameters_passed_i, __pyx_k_WaveTools_py_Parameters_passed_i, sizeof(__pyx_k_WaveTools_py_Parameters_passed_i), 0, 0, 1, 0},
23553  {&__pyx_kp_s_WaveTools_py_Phase_array_must_ha, __pyx_k_WaveTools_py_Phase_array_must_ha, sizeof(__pyx_k_WaveTools_py_Phase_array_must_ha), 0, 0, 1, 0},
23554  {&__pyx_kp_s_WaveTools_py_Reading_spectra_No, __pyx_k_WaveTools_py_Reading_spectra_No, sizeof(__pyx_k_WaveTools_py_Reading_spectra_No), 0, 0, 1, 0},
23555  {&__pyx_kp_s_WaveTools_py_Reading_timeseries, __pyx_k_WaveTools_py_Reading_timeseries, sizeof(__pyx_k_WaveTools_py_Reading_timeseries), 0, 0, 1, 0},
23556  {&__pyx_kp_s_WaveTools_py_Reconstruction_is_e, __pyx_k_WaveTools_py_Reconstruction_is_e, sizeof(__pyx_k_WaveTools_py_Reconstruction_is_e), 0, 0, 1, 0},
23557  {&__pyx_kp_s_WaveTools_py_Set_parameters_for, __pyx_k_WaveTools_py_Set_parameters_for, sizeof(__pyx_k_WaveTools_py_Set_parameters_for), 0, 0, 1, 0},
23558  {&__pyx_kp_s_WaveTools_py_Timeseries_file_s_m, __pyx_k_WaveTools_py_Timeseries_file_s_m, sizeof(__pyx_k_WaveTools_py_Timeseries_file_s_m), 0, 0, 1, 0},
23559  {&__pyx_kp_s_WaveTools_py_Using_s_windows_for, __pyx_k_WaveTools_py_Using_s_windows_for, sizeof(__pyx_k_WaveTools_py_Using_s_windows_for), 0, 0, 1, 0},
23560  {&__pyx_kp_s_WaveTools_py_Wavelenght_is_not_d, __pyx_k_WaveTools_py_Wavelenght_is_not_d, sizeof(__pyx_k_WaveTools_py_Wavelenght_is_not_d), 0, 0, 1, 0},
23561  {&__pyx_kp_s_WaveTools_py_Window_handover_is, __pyx_k_WaveTools_py_Window_handover_is, sizeof(__pyx_k_WaveTools_py_Window_handover_is), 0, 0, 1, 0},
23562  {&__pyx_kp_s_WaveTools_py_Wrong_function_type, __pyx_k_WaveTools_py_Wrong_function_type, sizeof(__pyx_k_WaveTools_py_Wrong_function_type), 0, 0, 1, 0},
23563  {&__pyx_kp_s_WaveTools_py_meanVelocity_should, __pyx_k_WaveTools_py_meanVelocity_should, sizeof(__pyx_k_WaveTools_py_meanVelocity_should), 0, 0, 1, 0},
23564  {&__pyx_kp_s_WaveTools_py_performing_a_direct, __pyx_k_WaveTools_py_performing_a_direct, sizeof(__pyx_k_WaveTools_py_performing_a_direct), 0, 0, 1, 0},
23565  {&__pyx_kp_s_WaveTools_py_performing_series_d, __pyx_k_WaveTools_py_performing_series_d, sizeof(__pyx_k_WaveTools_py_performing_series_d), 0, 0, 1, 0},
23566  {&__pyx_kp_s_WaveTools_py_phi_argument_must_b, __pyx_k_WaveTools_py_phi_argument_must_b, sizeof(__pyx_k_WaveTools_py_phi_argument_must_b), 0, 0, 1, 0},
23567  {&__pyx_kp_s_WaveTools_py_phi_in_DirectionalW, __pyx_k_WaveTools_py_phi_in_DirectionalW, sizeof(__pyx_k_WaveTools_py_phi_in_DirectionalW), 0, 0, 1, 0},
23568  {&__pyx_kp_s_Wave_direction_is_not_perpendicu, __pyx_k_Wave_direction_is_not_perpendicu, sizeof(__pyx_k_Wave_direction_is_not_perpendicu), 0, 0, 1, 0},
23569  {&__pyx_kp_s_Wavetools_py_Provide_valid_depth, __pyx_k_Wavetools_py_Provide_valid_depth, sizeof(__pyx_k_Wavetools_py_Provide_valid_depth), 0, 0, 1, 0},
23570  {&__pyx_kp_s_Wavetools_py_Stopping_simulation, __pyx_k_Wavetools_py_Stopping_simulation, sizeof(__pyx_k_Wavetools_py_Stopping_simulation), 0, 0, 1, 0},
23571  {&__pyx_n_s_Window, __pyx_k_Window, sizeof(__pyx_k_Window), 0, 0, 1, 1},
23572  {&__pyx_kp_s_Wrong_wavetype_given_Valid_wavet, __pyx_k_Wrong_wavetype_given_Valid_wavet, sizeof(__pyx_k_Wrong_wavetype_given_Valid_wavet), 0, 0, 1, 0},
23573  {&__pyx_n_s_Y, __pyx_k_Y, sizeof(__pyx_k_Y), 0, 0, 1, 1},
23574  {&__pyx_n_s_Ycoeff, __pyx_k_Ycoeff, sizeof(__pyx_k_Ycoeff), 0, 0, 1, 1},
23575  {&__pyx_n_s_Z, __pyx_k_Z, sizeof(__pyx_k_Z), 0, 0, 1, 1},
23576  {&__pyx_kp_s__82, __pyx_k__82, sizeof(__pyx_k__82), 0, 0, 1, 0},
23577  {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
23578  {&__pyx_n_s_aa, __pyx_k_aa, sizeof(__pyx_k_aa), 0, 0, 1, 1},
23579  {&__pyx_n_s_ai, __pyx_k_ai, sizeof(__pyx_k_ai), 0, 0, 1, 1},
23580  {&__pyx_n_s_aiDirs, __pyx_k_aiDirs, sizeof(__pyx_k_aiDirs), 0, 0, 1, 1},
23581  {&__pyx_n_s_aiM, __pyx_k_aiM, sizeof(__pyx_k_aiM), 0, 0, 1, 1},
23582  {&__pyx_n_s_amp, __pyx_k_amp, sizeof(__pyx_k_amp), 0, 0, 1, 1},
23583  {&__pyx_n_s_amplitude, __pyx_k_amplitude, sizeof(__pyx_k_amplitude), 0, 0, 1, 1},
23584  {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
23585  {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
23586  {&__pyx_n_s_bandFactor, __pyx_k_bandFactor, sizeof(__pyx_k_bandFactor), 0, 0, 1, 1},
23587  {&__pyx_n_s_bj, __pyx_k_bj, sizeof(__pyx_k_bj), 0, 0, 1, 1},
23588  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
23589  {&__pyx_n_s_cmath, __pyx_k_cmath, sizeof(__pyx_k_cmath), 0, 0, 1, 1},
23590  {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
23591  {&__pyx_n_s_cos, __pyx_k_cos, sizeof(__pyx_k_cos), 0, 0, 1, 1},
23592  {&__pyx_n_s_cos2s, __pyx_k_cos2s, sizeof(__pyx_k_cos2s), 0, 0, 1, 1},
23593  {&__pyx_n_s_cosh, __pyx_k_cosh, sizeof(__pyx_k_cosh), 0, 0, 1, 1},
23594  {&__pyx_n_s_costap, __pyx_k_costap, sizeof(__pyx_k_costap), 0, 0, 1, 1},
23595  {&__pyx_kp_s_csv, __pyx_k_csv, sizeof(__pyx_k_csv), 0, 0, 1, 0},
23596  {&__pyx_n_s_cut, __pyx_k_cut, sizeof(__pyx_k_cut), 0, 0, 1, 1},
23597  {&__pyx_n_s_cutoff, __pyx_k_cutoff, sizeof(__pyx_k_cutoff), 0, 0, 1, 1},
23598  {&__pyx_n_s_cutoffTotal, __pyx_k_cutoffTotal, sizeof(__pyx_k_cutoffTotal), 0, 0, 1, 1},
23599  {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1},
23600  {&__pyx_n_s_decomp, __pyx_k_decomp, sizeof(__pyx_k_decomp), 0, 0, 1, 1},
23601  {&__pyx_n_s_decompose_tseries, __pyx_k_decompose_tseries, sizeof(__pyx_k_decompose_tseries), 0, 0, 1, 1},
23602  {&__pyx_n_s_decompose_window, __pyx_k_decompose_window, sizeof(__pyx_k_decompose_window), 0, 0, 1, 1},
23603  {&__pyx_n_s_delimiter, __pyx_k_delimiter, sizeof(__pyx_k_delimiter), 0, 0, 1, 1},
23604  {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1},
23605  {&__pyx_n_s_df, __pyx_k_df, sizeof(__pyx_k_df), 0, 0, 1, 1},
23606  {&__pyx_n_s_diff, __pyx_k_diff, sizeof(__pyx_k_diff), 0, 0, 1, 1},
23607  {&__pyx_n_s_dirCheck, __pyx_k_dirCheck, sizeof(__pyx_k_dirCheck), 0, 0, 1, 1},
23608  {&__pyx_n_s_dircheck, __pyx_k_dircheck, sizeof(__pyx_k_dircheck), 0, 0, 1, 1},
23609  {&__pyx_n_s_directions, __pyx_k_directions, sizeof(__pyx_k_directions), 0, 0, 1, 1},
23610  {&__pyx_n_s_dispersion, __pyx_k_dispersion, sizeof(__pyx_k_dispersion), 0, 0, 1, 1},
23611  {&__pyx_n_s_doInterp, __pyx_k_doInterp, sizeof(__pyx_k_doInterp), 0, 0, 1, 1},
23612  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
23613  {&__pyx_n_s_dt, __pyx_k_dt, sizeof(__pyx_k_dt), 0, 0, 1, 1},
23614  {&__pyx_n_s_dt_temp, __pyx_k_dt_temp, sizeof(__pyx_k_dt_temp), 0, 0, 1, 1},
23615  {&__pyx_n_s_dth, __pyx_k_dth, sizeof(__pyx_k_dth), 0, 0, 1, 1},
23616  {&__pyx_n_s_eta, __pyx_k_eta, sizeof(__pyx_k_eta), 0, 0, 1, 1},
23617  {&__pyx_n_s_etaDirect, __pyx_k_etaDirect, sizeof(__pyx_k_etaDirect), 0, 0, 1, 1},
23618  {&__pyx_n_s_etaWindow, __pyx_k_etaWindow, sizeof(__pyx_k_etaWindow), 0, 0, 1, 1},
23619  {&__pyx_n_s_eta_mode, __pyx_k_eta_mode, sizeof(__pyx_k_eta_mode), 0, 0, 1, 1},
23620  {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
23621  {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1},
23622  {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
23623  {&__pyx_n_s_f0, __pyx_k_f0, sizeof(__pyx_k_f0), 0, 0, 1, 1},
23624  {&__pyx_n_s_fft, __pyx_k_fft, sizeof(__pyx_k_fft), 0, 0, 1, 1},
23625  {&__pyx_n_s_fft_x, __pyx_k_fft_x, sizeof(__pyx_k_fft_x), 0, 0, 1, 1},
23626  {&__pyx_n_s_fftfreq, __pyx_k_fftfreq, sizeof(__pyx_k_fftfreq), 0, 0, 1, 1},
23627  {&__pyx_n_s_fi, __pyx_k_fi, sizeof(__pyx_k_fi), 0, 0, 1, 1},
23628  {&__pyx_n_s_fid, __pyx_k_fid, sizeof(__pyx_k_fid), 0, 0, 1, 1},
23629  {&__pyx_n_s_filetype, __pyx_k_filetype, sizeof(__pyx_k_filetype), 0, 0, 1, 1},
23630  {&__pyx_n_s_fim, __pyx_k_fim, sizeof(__pyx_k_fim), 0, 0, 1, 1},
23631  {&__pyx_n_s_fim_tmp, __pyx_k_fim_tmp, sizeof(__pyx_k_fim_tmp), 0, 0, 1, 1},
23632  {&__pyx_n_s_findWindow, __pyx_k_findWindow, sizeof(__pyx_k_findWindow), 0, 0, 1, 1},
23633  {&__pyx_n_s_fmax, __pyx_k_fmax, sizeof(__pyx_k_fmax), 0, 0, 1, 1},
23634  {&__pyx_n_s_fmin, __pyx_k_fmin, sizeof(__pyx_k_fmin), 0, 0, 1, 1},
23635  {&__pyx_n_s_fp, __pyx_k_fp, sizeof(__pyx_k_fp), 0, 0, 1, 1},
23636  {&__pyx_n_s_freq, __pyx_k_freq, sizeof(__pyx_k_freq), 0, 0, 1, 1},
23637  {&__pyx_n_s_fun, __pyx_k_fun, sizeof(__pyx_k_fun), 0, 0, 1, 1},
23638  {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1},
23639  {&__pyx_n_s_funcName, __pyx_k_funcName, sizeof(__pyx_k_funcName), 0, 0, 1, 1},
23640  {&__pyx_n_s_funcNames, __pyx_k_funcNames, sizeof(__pyx_k_funcNames), 0, 0, 1, 1},
23641  {&__pyx_n_s_func_ret, __pyx_k_func_ret, sizeof(__pyx_k_func_ret), 0, 0, 1, 1},
23642  {&__pyx_n_s_g, __pyx_k_g, sizeof(__pyx_k_g), 0, 0, 1, 1},
23643  {&__pyx_n_s_gAbs, __pyx_k_gAbs, sizeof(__pyx_k_gAbs), 0, 0, 1, 1},
23644  {&__pyx_n_s_gamma, __pyx_k_gamma, sizeof(__pyx_k_gamma), 0, 0, 1, 1},
23645  {&__pyx_n_s_handover, __pyx_k_handover, sizeof(__pyx_k_handover), 0, 0, 1, 1},
23646  {&__pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_k_home_cekees_proteus_proteus_Wav, sizeof(__pyx_k_home_cekees_proteus_proteus_Wav), 0, 0, 1, 0},
23647  {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
23648  {&__pyx_n_s_iend, __pyx_k_iend, sizeof(__pyx_k_iend), 0, 0, 1, 1},
23649  {&__pyx_n_s_ii, __pyx_k_ii, sizeof(__pyx_k_ii), 0, 0, 1, 1},
23650  {&__pyx_n_s_imax, __pyx_k_imax, sizeof(__pyx_k_imax), 0, 0, 1, 1},
23651  {&__pyx_n_s_imin, __pyx_k_imin, sizeof(__pyx_k_imin), 0, 0, 1, 1},
23652  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
23653  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
23654  {&__pyx_n_s_interp, __pyx_k_interp, sizeof(__pyx_k_interp), 0, 0, 1, 1},
23655  {&__pyx_n_s_ipeak, __pyx_k_ipeak, sizeof(__pyx_k_ipeak), 0, 0, 1, 1},
23656  {&__pyx_n_s_ispan1, __pyx_k_ispan1, sizeof(__pyx_k_ispan1), 0, 0, 1, 1},
23657  {&__pyx_n_s_ispan2, __pyx_k_ispan2, sizeof(__pyx_k_ispan2), 0, 0, 1, 1},
23658  {&__pyx_n_s_jj, __pyx_k_jj, sizeof(__pyx_k_jj), 0, 0, 1, 1},
23659  {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
23660  {&__pyx_n_s_kAbs, __pyx_k_kAbs, sizeof(__pyx_k_kAbs), 0, 0, 1, 1},
23661  {&__pyx_n_s_kDir, __pyx_k_kDir, sizeof(__pyx_k_kDir), 0, 0, 1, 1},
23662  {&__pyx_n_s_kDirM, __pyx_k_kDirM, sizeof(__pyx_k_kDirM), 0, 0, 1, 1},
23663  {&__pyx_n_s_kDiri, __pyx_k_kDiri, sizeof(__pyx_k_kDiri), 0, 0, 1, 1},
23664  {&__pyx_n_s_kdir, __pyx_k_kdir, sizeof(__pyx_k_kdir), 0, 0, 1, 1},
23665  {&__pyx_n_s_ki, __pyx_k_ki, sizeof(__pyx_k_ki), 0, 0, 1, 1},
23666  {&__pyx_n_s_kiM, __pyx_k_kiM, sizeof(__pyx_k_kiM), 0, 0, 1, 1},
23667  {&__pyx_n_s_kk, __pyx_k_kk, sizeof(__pyx_k_kk), 0, 0, 1, 1},
23668  {&__pyx_n_s_kmode, __pyx_k_kmode, sizeof(__pyx_k_kmode), 0, 0, 1, 1},
23669  {&__pyx_n_s_knownWaveTypes, __pyx_k_knownWaveTypes, sizeof(__pyx_k_knownWaveTypes), 0, 0, 1, 1},
23670  {&__pyx_n_s_l, __pyx_k_l, sizeof(__pyx_k_l), 0, 0, 1, 1},
23671  {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1},
23672  {&__pyx_n_s_linspace, __pyx_k_linspace, sizeof(__pyx_k_linspace), 0, 0, 1, 1},
23673  {&__pyx_n_s_loadExistingFunction, __pyx_k_loadExistingFunction, sizeof(__pyx_k_loadExistingFunction), 0, 0, 1, 1},
23674  {&__pyx_n_s_loadtxt, __pyx_k_loadtxt, sizeof(__pyx_k_loadtxt), 0, 0, 1, 1},
23675  {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1},
23676  {&__pyx_n_s_logEvent, __pyx_k_logEvent, sizeof(__pyx_k_logEvent), 0, 0, 1, 1},
23677  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
23678  {&__pyx_n_s_math, __pyx_k_math, sizeof(__pyx_k_math), 0, 0, 1, 1},
23679  {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
23680  {&__pyx_n_s_mean, __pyx_k_mean, sizeof(__pyx_k_mean), 0, 0, 1, 1},
23681  {&__pyx_n_s_meanVelocity, __pyx_k_meanVelocity, sizeof(__pyx_k_meanVelocity), 0, 0, 1, 1},
23682  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
23683  {&__pyx_n_s_mitsuyasu, __pyx_k_mitsuyasu, sizeof(__pyx_k_mitsuyasu), 0, 0, 1, 1},
23684  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
23685  {&__pyx_n_s_mwl, __pyx_k_mwl, sizeof(__pyx_k_mwl), 0, 0, 1, 1},
23686  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
23687  {&__pyx_n_s_ncols, __pyx_k_ncols, sizeof(__pyx_k_ncols), 0, 0, 1, 1},
23688  {&__pyx_n_s_nfft, __pyx_k_nfft, sizeof(__pyx_k_nfft), 0, 0, 1, 1},
23689  {&__pyx_n_s_niter, __pyx_k_niter, sizeof(__pyx_k_niter), 0, 0, 1, 1},
23690  {&__pyx_n_s_nn, __pyx_k_nn, sizeof(__pyx_k_nn), 0, 0, 1, 1},
23691  {&__pyx_n_s_normIntegral, __pyx_k_normIntegral, sizeof(__pyx_k_normIntegral), 0, 0, 1, 1},
23692  {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
23693  {&__pyx_n_s_npoints, __pyx_k_npoints, sizeof(__pyx_k_npoints), 0, 0, 1, 1},
23694  {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
23695  {&__pyx_n_s_omega, __pyx_k_omega, sizeof(__pyx_k_omega), 0, 0, 1, 1},
23696  {&__pyx_n_s_omega0, __pyx_k_omega0, sizeof(__pyx_k_omega0), 0, 0, 1, 1},
23697  {&__pyx_n_s_omegaM, __pyx_k_omegaM, sizeof(__pyx_k_omegaM), 0, 0, 1, 1},
23698  {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1},
23699  {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1},
23700  {&__pyx_n_s_overlap, __pyx_k_overlap, sizeof(__pyx_k_overlap), 0, 0, 1, 1},
23701  {&__pyx_n_s_period, __pyx_k_period, sizeof(__pyx_k_period), 0, 0, 1, 1},
23702  {&__pyx_n_s_phase, __pyx_k_phase, sizeof(__pyx_k_phase), 0, 0, 1, 1},
23703  {&__pyx_n_s_phi, __pyx_k_phi, sizeof(__pyx_k_phi), 0, 0, 1, 1},
23704  {&__pyx_n_s_phi0, __pyx_k_phi0, sizeof(__pyx_k_phi0), 0, 0, 1, 1},
23705  {&__pyx_n_s_phiDirs, __pyx_k_phiDirs, sizeof(__pyx_k_phiDirs), 0, 0, 1, 1},
23706  {&__pyx_n_s_phiM, __pyx_k_phiM, sizeof(__pyx_k_phiM), 0, 0, 1, 1},
23707  {&__pyx_n_s_phiSymm, __pyx_k_phiSymm, sizeof(__pyx_k_phiSymm), 0, 0, 1, 1},
23708  {&__pyx_n_s_pi, __pyx_k_pi, sizeof(__pyx_k_pi), 0, 0, 1, 1},
23709  {&__pyx_n_s_pp, __pyx_k_pp, sizeof(__pyx_k_pp), 0, 0, 1, 1},
23710  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
23711  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
23712  {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1},
23713  {&__pyx_n_s_rand, __pyx_k_rand, sizeof(__pyx_k_rand), 0, 0, 1, 1},
23714  {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1},
23715  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
23716  {&__pyx_n_s_real, __pyx_k_real, sizeof(__pyx_k_real), 0, 0, 1, 1},
23717  {&__pyx_n_s_rec_direct, __pyx_k_rec_direct, sizeof(__pyx_k_rec_direct), 0, 0, 1, 1},
23718  {&__pyx_n_s_reduceToIntervals, __pyx_k_reduceToIntervals, sizeof(__pyx_k_reduceToIntervals), 0, 0, 1, 1},
23719  {&__pyx_n_s_results, __pyx_k_results, sizeof(__pyx_k_results), 0, 0, 1, 1},
23720  {&__pyx_n_s_returnRectangles, __pyx_k_returnRectangles, sizeof(__pyx_k_returnRectangles), 0, 0, 1, 1},
23721  {&__pyx_n_s_returnRectangles3D, __pyx_k_returnRectangles3D, sizeof(__pyx_k_returnRectangles3D), 0, 0, 1, 1},
23722  {&__pyx_n_s_rotation3D, __pyx_k_rotation3D, sizeof(__pyx_k_rotation3D), 0, 0, 1, 1},
23723  {&__pyx_n_s_rr, __pyx_k_rr, sizeof(__pyx_k_rr), 0, 0, 1, 1},
23724  {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
23725  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
23726  {&__pyx_n_s_setDirVector, __pyx_k_setDirVector, sizeof(__pyx_k_setDirVector), 0, 0, 1, 1},
23727  {&__pyx_n_s_setVertDir, __pyx_k_setVertDir, sizeof(__pyx_k_setVertDir), 0, 0, 1, 1},
23728  {&__pyx_n_s_setup, __pyx_k_setup, sizeof(__pyx_k_setup), 0, 0, 1, 1},
23729  {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
23730  {&__pyx_n_s_sigma, __pyx_k_sigma, sizeof(__pyx_k_sigma), 0, 0, 1, 1},
23731  {&__pyx_n_s_sigmaReturn, __pyx_k_sigmaReturn, sizeof(__pyx_k_sigmaReturn), 0, 0, 1, 1},
23732  {&__pyx_n_s_sin, __pyx_k_sin, sizeof(__pyx_k_sin), 0, 0, 1, 1},
23733  {&__pyx_n_s_sinh, __pyx_k_sinh, sizeof(__pyx_k_sinh), 0, 0, 1, 1},
23734  {&__pyx_n_s_skiprows, __pyx_k_skiprows, sizeof(__pyx_k_skiprows), 0, 0, 1, 1},
23735  {&__pyx_n_s_smax, __pyx_k_smax, sizeof(__pyx_k_smax), 0, 0, 1, 1},
23736  {&__pyx_n_s_span, __pyx_k_span, sizeof(__pyx_k_span), 0, 0, 1, 1},
23737  {&__pyx_n_s_spec_fun, __pyx_k_spec_fun, sizeof(__pyx_k_spec_fun), 0, 0, 1, 1},
23738  {&__pyx_n_s_spectName, __pyx_k_spectName, sizeof(__pyx_k_spectName), 0, 0, 1, 1},
23739  {&__pyx_n_s_spectral_params, __pyx_k_spectral_params, sizeof(__pyx_k_spectral_params), 0, 0, 1, 1},
23740  {&__pyx_n_s_spreadName, __pyx_k_spreadName, sizeof(__pyx_k_spreadName), 0, 0, 1, 1},
23741  {&__pyx_n_s_spread_fun, __pyx_k_spread_fun, sizeof(__pyx_k_spread_fun), 0, 0, 1, 1},
23742  {&__pyx_n_s_spread_params, __pyx_k_spread_params, sizeof(__pyx_k_spread_params), 0, 0, 1, 1},
23743  {&__pyx_n_s_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 0, 0, 1, 1},
23744  {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1},
23745  {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
23746  {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
23747  {&__pyx_n_s_t0, __pyx_k_t0, sizeof(__pyx_k_t0), 0, 0, 1, 1},
23748  {&__pyx_n_s_tanh, __pyx_k_tanh, sizeof(__pyx_k_tanh), 0, 0, 1, 1},
23749  {&__pyx_n_s_tdata, __pyx_k_tdata, sizeof(__pyx_k_tdata), 0, 0, 1, 1},
23750  {&__pyx_n_s_temp_array, __pyx_k_temp_array, sizeof(__pyx_k_temp_array), 0, 0, 1, 1},
23751  {&__pyx_n_s_term, __pyx_k_term, sizeof(__pyx_k_term), 0, 0, 1, 1},
23752  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
23753  {&__pyx_n_s_tfirst, __pyx_k_tfirst, sizeof(__pyx_k_tfirst), 0, 0, 1, 1},
23754  {&__pyx_n_s_th, __pyx_k_th, sizeof(__pyx_k_th), 0, 0, 1, 1},
23755  {&__pyx_n_s_theta, __pyx_k_theta, sizeof(__pyx_k_theta), 0, 0, 1, 1},
23756  {&__pyx_n_s_theta_m, __pyx_k_theta_m, sizeof(__pyx_k_theta_m), 0, 0, 1, 1},
23757  {&__pyx_n_s_thetas, __pyx_k_thetas, sizeof(__pyx_k_thetas), 0, 0, 1, 1},
23758  {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
23759  {&__pyx_n_s_timeSeriesFile, __pyx_k_timeSeriesFile, sizeof(__pyx_k_timeSeriesFile), 0, 0, 1, 1},
23760  {&__pyx_n_s_timeSeriesPosition, __pyx_k_timeSeriesPosition, sizeof(__pyx_k_timeSeriesPosition), 0, 0, 1, 1},
23761  {&__pyx_n_s_time_temp, __pyx_k_time_temp, sizeof(__pyx_k_time_temp), 0, 0, 1, 1},
23762  {&__pyx_n_s_tlast, __pyx_k_tlast, sizeof(__pyx_k_tlast), 0, 0, 1, 1},
23763  {&__pyx_n_s_tlength, __pyx_k_tlength, sizeof(__pyx_k_tlength), 0, 0, 1, 1},
23764  {&__pyx_n_s_tma, __pyx_k_tma, sizeof(__pyx_k_tma), 0, 0, 1, 1},
23765  {&__pyx_n_s_tolist, __pyx_k_tolist, sizeof(__pyx_k_tolist), 0, 0, 1, 1},
23766  {&__pyx_n_s_tophat, __pyx_k_tophat, sizeof(__pyx_k_tophat), 0, 0, 1, 1},
23767  {&__pyx_n_s_tstart, __pyx_k_tstart, sizeof(__pyx_k_tstart), 0, 0, 1, 1},
23768  {&__pyx_n_s_tt, __pyx_k_tt, sizeof(__pyx_k_tt), 0, 0, 1, 1},
23769  {&__pyx_kp_s_txt, __pyx_k_txt, sizeof(__pyx_k_txt), 0, 0, 1, 0},
23770  {&__pyx_n_s_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 0, 1, 1},
23771  {&__pyx_n_s_uDirect, __pyx_k_uDirect, sizeof(__pyx_k_uDirect), 0, 0, 1, 1},
23772  {&__pyx_n_s_uWindow, __pyx_k_uWindow, sizeof(__pyx_k_uWindow), 0, 0, 1, 1},
23773  {&__pyx_n_s_v1, __pyx_k_v1, sizeof(__pyx_k_v1), 0, 0, 1, 1},
23774  {&__pyx_n_s_v2, __pyx_k_v2, sizeof(__pyx_k_v2), 0, 0, 1, 1},
23775  {&__pyx_n_s_vDir, __pyx_k_vDir, sizeof(__pyx_k_vDir), 0, 0, 1, 1},
23776  {&__pyx_n_s_validFunctions, __pyx_k_validFunctions, sizeof(__pyx_k_validFunctions), 0, 0, 1, 1},
23777  {&__pyx_n_s_validSpectra, __pyx_k_validSpectra, sizeof(__pyx_k_validSpectra), 0, 0, 1, 1},
23778  {&__pyx_n_s_validSpread, __pyx_k_validSpread, sizeof(__pyx_k_validSpread), 0, 0, 1, 1},
23779  {&__pyx_n_s_validWindows, __pyx_k_validWindows, sizeof(__pyx_k_validWindows), 0, 0, 1, 1},
23780  {&__pyx_n_s_vector, __pyx_k_vector, sizeof(__pyx_k_vector), 0, 0, 1, 1},
23781  {&__pyx_n_s_vel_mode, __pyx_k_vel_mode, sizeof(__pyx_k_vel_mode), 0, 0, 1, 1},
23782  {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
23783  {&__pyx_n_s_w_aux, __pyx_k_w_aux, sizeof(__pyx_k_w_aux), 0, 0, 1, 1},
23784  {&__pyx_n_s_waveDir, __pyx_k_waveDir, sizeof(__pyx_k_waveDir), 0, 0, 1, 1},
23785  {&__pyx_n_s_waveDir0, __pyx_k_waveDir0, sizeof(__pyx_k_waveDir0), 0, 0, 1, 1},
23786  {&__pyx_n_s_waveDirs, __pyx_k_waveDirs, sizeof(__pyx_k_waveDirs), 0, 0, 1, 1},
23787  {&__pyx_n_s_waveHeight, __pyx_k_waveHeight, sizeof(__pyx_k_waveHeight), 0, 0, 1, 1},
23788  {&__pyx_n_s_waveType, __pyx_k_waveType, sizeof(__pyx_k_waveType), 0, 0, 1, 1},
23789  {&__pyx_n_s_wavelength, __pyx_k_wavelength, sizeof(__pyx_k_wavelength), 0, 0, 1, 1},
23790  {&__pyx_n_s_where, __pyx_k_where, sizeof(__pyx_k_where), 0, 0, 1, 1},
23791  {&__pyx_n_s_wind, __pyx_k_wind, sizeof(__pyx_k_wind), 0, 0, 1, 1},
23792  {&__pyx_n_s_wind_filt, __pyx_k_wind_filt, sizeof(__pyx_k_wind_filt), 0, 0, 1, 1},
23793  {&__pyx_n_s_windowName, __pyx_k_windowName, sizeof(__pyx_k_windowName), 0, 0, 1, 1},
23794  {&__pyx_n_s_window_params, __pyx_k_window_params, sizeof(__pyx_k_window_params), 0, 0, 1, 1},
23795  {&__pyx_n_s_windows_handover, __pyx_k_windows_handover, sizeof(__pyx_k_windows_handover), 0, 0, 1, 1},
23796  {&__pyx_n_s_windows_rec, __pyx_k_windows_rec, sizeof(__pyx_k_windows_rec), 0, 0, 1, 1},
23797  {&__pyx_n_s_wmode, __pyx_k_wmode, sizeof(__pyx_k_wmode), 0, 0, 1, 1},
23798  {&__pyx_n_s_ww, __pyx_k_ww, sizeof(__pyx_k_ww), 0, 0, 1, 1},
23799  {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
23800  {&__pyx_n_s_x0, __pyx_k_x0, sizeof(__pyx_k_x0), 0, 0, 1, 1},
23801  {&__pyx_n_s_x1, __pyx_k_x1, sizeof(__pyx_k_x1), 0, 0, 1, 1},
23802  {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1},
23803  {&__pyx_n_s_y0, __pyx_k_y0, sizeof(__pyx_k_y0), 0, 0, 1, 1},
23804  {&__pyx_n_s_z0, __pyx_k_z0, sizeof(__pyx_k_z0), 0, 0, 1, 1},
23805  {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
23806  {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1},
23807  {0, 0, 0, 0, 0, 0, 0}
23808 };
23809 static int __Pyx_InitCachedBuiltins(void) {
23810  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23811  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23812  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23813  __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23814  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23815  return 0;
23816  __pyx_L1_error:;
23817  return -1;
23818 }
23819 
23820 static int __Pyx_InitCachedConstants(void) {
23821  __Pyx_RefNannyDeclarations
23822  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
23823 
23824  /* "WaveTools.pyx":34
23825  * if funcName not in funcNames:
23826  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
23827  * sys.exit(1) # <<<<<<<<<<<<<<
23828  * return func_ret
23829  *
23830  */
23831  __pyx_tuple_ = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23832  __Pyx_GOTREF(__pyx_tuple_);
23833  __Pyx_GIVEREF(__pyx_tuple_);
23834 
23835  /* "WaveTools.pyx":59
23836  * #print self.dircheck
23837  * if dircheck > 1e-10:
23838  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0) # <<<<<<<<<<<<<<
23839  * return sys.exit(1)
23840  * else:
23841  */
23842  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Wave_direction_is_not_perpendicu); if (unlikely(!__pyx_tuple__2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23843  __Pyx_GOTREF(__pyx_tuple__2);
23844  __Pyx_GIVEREF(__pyx_tuple__2);
23845 
23846  /* "WaveTools.pyx":60
23847  * if dircheck > 1e-10:
23848  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
23849  * return sys.exit(1) # <<<<<<<<<<<<<<
23850  * else:
23851  * return None
23852  */
23853  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23854  __Pyx_GOTREF(__pyx_tuple__3);
23855  __Pyx_GIVEREF(__pyx_tuple__3);
23856 
23857  /* "WaveTools.pyx":70
23858  * param: df : dx constant step of array [-]
23859  * """
23860  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist() # <<<<<<<<<<<<<<
23861  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
23862  * def returnRectangles(a,x):
23863  */
23864  __pyx_slice__4 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23865  __Pyx_GOTREF(__pyx_slice__4);
23866  __Pyx_GIVEREF(__pyx_slice__4);
23867  __pyx_slice__5 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23868  __Pyx_GOTREF(__pyx_slice__5);
23869  __Pyx_GIVEREF(__pyx_slice__5);
23870 
23871  /* "WaveTools.pyx":77
23872  * param: x : x- coordinate [-]
23873  * """
23874  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1]) # <<<<<<<<<<<<<<
23875  * def returnRectangles3D(a,x,y):
23876  * """ Returns \delta y of y(x,z) using the rectangle method
23877  */
23878  __pyx_slice__6 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23879  __Pyx_GOTREF(__pyx_slice__6);
23880  __Pyx_GIVEREF(__pyx_slice__6);
23881  __pyx_slice__7 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23882  __Pyx_GOTREF(__pyx_slice__7);
23883  __Pyx_GIVEREF(__pyx_slice__7);
23884  __pyx_slice__8 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23885  __Pyx_GOTREF(__pyx_slice__8);
23886  __Pyx_GIVEREF(__pyx_slice__8);
23887  __pyx_slice__9 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23888  __Pyx_GOTREF(__pyx_slice__9);
23889  __Pyx_GIVEREF(__pyx_slice__9);
23890 
23891  /* "WaveTools.pyx":85
23892  * param: y : y- coordinate [-]
23893  * """
23894  * ai = 0.5*(a[1:,:]+a[:-1,:]) # <<<<<<<<<<<<<<
23895  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
23896  * for ii in range(len(x)-1):
23897  */
23898  __pyx_slice__10 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23899  __Pyx_GOTREF(__pyx_slice__10);
23900  __Pyx_GIVEREF(__pyx_slice__10);
23901  __pyx_slice__11 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23902  __Pyx_GOTREF(__pyx_slice__11);
23903  __Pyx_GIVEREF(__pyx_slice__11);
23904  __pyx_tuple__12 = PyTuple_Pack(2, __pyx_slice__10, __pyx_slice__11); if (unlikely(!__pyx_tuple__12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23905  __Pyx_GOTREF(__pyx_tuple__12);
23906  __Pyx_GIVEREF(__pyx_tuple__12);
23907  __pyx_slice__13 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23908  __Pyx_GOTREF(__pyx_slice__13);
23909  __Pyx_GIVEREF(__pyx_slice__13);
23910  __pyx_slice__14 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23911  __Pyx_GOTREF(__pyx_slice__14);
23912  __Pyx_GIVEREF(__pyx_slice__14);
23913  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_slice__13, __pyx_slice__14); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23914  __Pyx_GOTREF(__pyx_tuple__15);
23915  __Pyx_GIVEREF(__pyx_tuple__15);
23916 
23917  /* "WaveTools.pyx":86
23918  * """
23919  * ai = 0.5*(a[1:,:]+a[:-1,:])
23920  * ai = 0.5*(ai[:,1:]+ai[:,:-1]) # <<<<<<<<<<<<<<
23921  * for ii in range(len(x)-1):
23922  * ai[ii,:] *= (y[1:]-y[:-1])
23923  */
23924  __pyx_slice__16 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23925  __Pyx_GOTREF(__pyx_slice__16);
23926  __Pyx_GIVEREF(__pyx_slice__16);
23927  __pyx_slice__17 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23928  __Pyx_GOTREF(__pyx_slice__17);
23929  __Pyx_GIVEREF(__pyx_slice__17);
23930  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_slice__16, __pyx_slice__17); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23931  __Pyx_GOTREF(__pyx_tuple__18);
23932  __Pyx_GIVEREF(__pyx_tuple__18);
23933  __pyx_slice__19 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23934  __Pyx_GOTREF(__pyx_slice__19);
23935  __Pyx_GIVEREF(__pyx_slice__19);
23936  __pyx_slice__20 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23937  __Pyx_GOTREF(__pyx_slice__20);
23938  __Pyx_GIVEREF(__pyx_slice__20);
23939  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_slice__19, __pyx_slice__20); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23940  __Pyx_GOTREF(__pyx_tuple__21);
23941  __Pyx_GIVEREF(__pyx_tuple__21);
23942 
23943  /* "WaveTools.pyx":88
23944  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
23945  * for ii in range(len(x)-1):
23946  * ai[ii,:] *= (y[1:]-y[:-1]) # <<<<<<<<<<<<<<
23947  * for jj in range(len(y) - 1):
23948  * ai[:,jj] *= (x[1:]-x[:-1])
23949  */
23950  __pyx_slice__22 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23951  __Pyx_GOTREF(__pyx_slice__22);
23952  __Pyx_GIVEREF(__pyx_slice__22);
23953  __pyx_slice__23 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23954  __Pyx_GOTREF(__pyx_slice__23);
23955  __Pyx_GIVEREF(__pyx_slice__23);
23956  __pyx_slice__24 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23957  __Pyx_GOTREF(__pyx_slice__24);
23958  __Pyx_GIVEREF(__pyx_slice__24);
23959 
23960  /* "WaveTools.pyx":90
23961  * ai[ii,:] *= (y[1:]-y[:-1])
23962  * for jj in range(len(y) - 1):
23963  * ai[:,jj] *= (x[1:]-x[:-1]) # <<<<<<<<<<<<<<
23964  * return ai
23965  * def normIntegral(Sint,th):
23966  */
23967  __pyx_slice__25 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23968  __Pyx_GOTREF(__pyx_slice__25);
23969  __Pyx_GIVEREF(__pyx_slice__25);
23970  __pyx_slice__26 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23971  __Pyx_GOTREF(__pyx_slice__26);
23972  __Pyx_GIVEREF(__pyx_slice__26);
23973  __pyx_slice__27 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23974  __Pyx_GOTREF(__pyx_slice__27);
23975  __Pyx_GIVEREF(__pyx_slice__27);
23976 
23977  /* "WaveTools.pyx":166
23978  * if TMA:
23979  * if (depth == None):
23980  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum") # <<<<<<<<<<<<<<
23981  * logEvent("Wavetools:py. Stopping simulation")
23982  * sys.exit(1)
23983  */
23984  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Wavetools_py_Provide_valid_depth); if (unlikely(!__pyx_tuple__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23985  __Pyx_GOTREF(__pyx_tuple__28);
23986  __Pyx_GIVEREF(__pyx_tuple__28);
23987 
23988  /* "WaveTools.pyx":167
23989  * if (depth == None):
23990  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
23991  * logEvent("Wavetools:py. Stopping simulation") # <<<<<<<<<<<<<<
23992  * sys.exit(1)
23993  * k = dispersion(2*pi*f,depth)
23994  */
23995  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Wavetools_py_Stopping_simulation); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23996  __Pyx_GOTREF(__pyx_tuple__29);
23997  __Pyx_GIVEREF(__pyx_tuple__29);
23998 
23999  /* "WaveTools.pyx":168
24000  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
24001  * logEvent("Wavetools:py. Stopping simulation")
24002  * sys.exit(1) # <<<<<<<<<<<<<<
24003  * k = dispersion(2*pi*f,depth)
24004  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
24005  */
24006  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24007  __Pyx_GOTREF(__pyx_tuple__30);
24008  __Pyx_GIVEREF(__pyx_tuple__30);
24009 
24010  /* "WaveTools.pyx":194
24011  * """
24012  * fun = np.zeros((len(theta),len(f)),)
24013  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
24014  * fun[:,ii] = np.cos(theta/2)**(2*s)
24015  * return fun
24016  */
24017  __pyx_slice__31 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24018  __Pyx_GOTREF(__pyx_slice__31);
24019  __Pyx_GIVEREF(__pyx_slice__31);
24020  __pyx_tuple__32 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__31); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24021  __Pyx_GOTREF(__pyx_tuple__32);
24022  __Pyx_GIVEREF(__pyx_tuple__32);
24023 
24024  /* "WaveTools.pyx":195
24025  * fun = np.zeros((len(theta),len(f)),)
24026  * for ii in range(len(fun[0,:])):
24027  * fun[:,ii] = np.cos(theta/2)**(2*s) # <<<<<<<<<<<<<<
24028  * return fun
24029  * def mitsuyasu(theta,fi,f0,smax=10):
24030  */
24031  __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24032  __Pyx_GOTREF(__pyx_slice__33);
24033  __Pyx_GIVEREF(__pyx_slice__33);
24034 
24035  /* "WaveTools.pyx":209
24036  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
24037  * fun = np.zeros((len(theta),len(fi)),)
24038  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
24039  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
24040  * return fun
24041  */
24042  __pyx_slice__34 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24043  __Pyx_GOTREF(__pyx_slice__34);
24044  __Pyx_GIVEREF(__pyx_slice__34);
24045  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__34); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24046  __Pyx_GOTREF(__pyx_tuple__35);
24047  __Pyx_GIVEREF(__pyx_tuple__35);
24048 
24049  /* "WaveTools.pyx":210
24050  * fun = np.zeros((len(theta),len(fi)),)
24051  * for ii in range(len(fun[0,:])):
24052  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii]) # <<<<<<<<<<<<<<
24053  * return fun
24054  *
24055  */
24056  __pyx_slice__36 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24057  __Pyx_GOTREF(__pyx_slice__36);
24058  __Pyx_GIVEREF(__pyx_slice__36);
24059 
24060  /* "WaveTools.pyx":341
24061  * if self.waveType not in self.knownWaveTypes:
24062  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
24063  * sys.exit(1) # <<<<<<<<<<<<<<
24064  * self.g = np.array(g)
24065  * self.waveDir = setDirVector(np.array(waveDir))
24066  */
24067  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24068  __Pyx_GOTREF(__pyx_tuple__37);
24069  __Pyx_GIVEREF(__pyx_tuple__37);
24070 
24071  /* "WaveTools.pyx":365
24072  * self.wavelength=wavelength
24073  * except:
24074  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0) # <<<<<<<<<<<<<<
24075  * sys.exit(1)
24076  * self.kDir = self.k * self.waveDir
24077  */
24078  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Wavelenght_is_not_d); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24079  __Pyx_GOTREF(__pyx_tuple__38);
24080  __Pyx_GIVEREF(__pyx_tuple__38);
24081 
24082  /* "WaveTools.pyx":366
24083  * except:
24084  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
24085  * sys.exit(1) # <<<<<<<<<<<<<<
24086  * self.kDir = self.k * self.waveDir
24087  * self.amplitude = 0.5*self.waveHeight
24088  */
24089  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24090  __Pyx_GOTREF(__pyx_tuple__39);
24091  __Pyx_GIVEREF(__pyx_tuple__39);
24092 
24093  /* "WaveTools.pyx":373
24094  *
24095  * if(len(meanVelocity) != 3):
24096  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0) # <<<<<<<<<<<<<<
24097  * sys.exit(1)
24098  *
24099  */
24100  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_meanVelocity_should); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24101  __Pyx_GOTREF(__pyx_tuple__40);
24102  __Pyx_GIVEREF(__pyx_tuple__40);
24103 
24104  /* "WaveTools.pyx":374
24105  * if(len(meanVelocity) != 3):
24106  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
24107  * sys.exit(1) # <<<<<<<<<<<<<<
24108  *
24109  * self.Ycoeff = Ycoeff
24110  */
24111  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24112  __Pyx_GOTREF(__pyx_tuple__41);
24113  __Pyx_GIVEREF(__pyx_tuple__41);
24114 
24115  /* "WaveTools.pyx":382
24116  * if (Ycoeff is None) or (Bcoeff is None):
24117  * if self.waveType is not "Linear":
24118  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0) # <<<<<<<<<<<<<<
24119  * sys.exit(1)
24120  * def eta(self, x, t):
24121  */
24122  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Need_to_define_Ycoe); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24123  __Pyx_GOTREF(__pyx_tuple__42);
24124  __Pyx_GIVEREF(__pyx_tuple__42);
24125 
24126  /* "WaveTools.pyx":383
24127  * if self.waveType is not "Linear":
24128  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
24129  * sys.exit(1) # <<<<<<<<<<<<<<
24130  * def eta(self, x, t):
24131  * if self.waveType is "Linear":
24132  */
24133  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24134  __Pyx_GOTREF(__pyx_tuple__43);
24135  __Pyx_GIVEREF(__pyx_tuple__43);
24136 
24137  /* "WaveTools.pyx":461
24138  * if phi == None:
24139  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
24140  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves') # <<<<<<<<<<<<<<
24141  * else:
24142  * try:
24143  */
24144  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_No_phase_array_is_g); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24145  __Pyx_GOTREF(__pyx_tuple__44);
24146  __Pyx_GIVEREF(__pyx_tuple__44);
24147 
24148  /* "WaveTools.pyx":466
24149  * self.phi = np.array(phi)
24150  * if self.phi.shape[0] != self.fi.shape[0]:
24151  * logEvent('WaveTools.py: Phase array must have N elements') # <<<<<<<<<<<<<<
24152  * sys.exit(1)
24153  *
24154  */
24155  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Phase_array_must_ha); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24156  __Pyx_GOTREF(__pyx_tuple__45);
24157  __Pyx_GIVEREF(__pyx_tuple__45);
24158 
24159  /* "WaveTools.pyx":467
24160  * if self.phi.shape[0] != self.fi.shape[0]:
24161  * logEvent('WaveTools.py: Phase array must have N elements')
24162  * sys.exit(1) # <<<<<<<<<<<<<<
24163  *
24164  * except:
24165  */
24166  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24167  __Pyx_GOTREF(__pyx_tuple__46);
24168  __Pyx_GIVEREF(__pyx_tuple__46);
24169 
24170  /* "WaveTools.pyx":470
24171  *
24172  * except:
24173  * logEvent('WaveTools.py: phi argument must be an array with N elements') # <<<<<<<<<<<<<<
24174  * sys.exit(1)
24175  *
24176  */
24177  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_phi_argument_must_b); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24178  __Pyx_GOTREF(__pyx_tuple__47);
24179  __Pyx_GIVEREF(__pyx_tuple__47);
24180 
24181  /* "WaveTools.pyx":471
24182  * except:
24183  * logEvent('WaveTools.py: phi argument must be an array with N elements')
24184  * sys.exit(1) # <<<<<<<<<<<<<<
24185  *
24186  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
24187  */
24188  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24189  __Pyx_GOTREF(__pyx_tuple__48);
24190  __Pyx_GIVEREF(__pyx_tuple__48);
24191 
24192  /* "WaveTools.pyx":482
24193  * except:
24194  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
24195  * sys.exit(1) # <<<<<<<<<<<<<<
24196  *
24197  *
24198  */
24199  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24200  __Pyx_GOTREF(__pyx_tuple__49);
24201  __Pyx_GIVEREF(__pyx_tuple__49);
24202 
24203  /* "WaveTools.pyx":488
24204  * self.kDir = np.zeros((len(self.ki),3),)
24205  * for ii in range(3):
24206  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii] # <<<<<<<<<<<<<<
24207  * def eta(self, x, t):
24208  * """Free surface displacement
24209  */
24210  __pyx_slice__50 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24211  __Pyx_GOTREF(__pyx_slice__50);
24212  __Pyx_GIVEREF(__pyx_slice__50);
24213  __pyx_slice__51 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24214  __Pyx_GOTREF(__pyx_slice__51);
24215  __Pyx_GIVEREF(__pyx_slice__51);
24216 
24217  /* "WaveTools.pyx":537
24218  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
24219  *
24220  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
24221  * sys.exit(1)
24222  *
24223  */
24224  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Parameters_passed_i); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24225  __Pyx_GOTREF(__pyx_tuple__52);
24226  __Pyx_GIVEREF(__pyx_tuple__52);
24227 
24228  /* "WaveTools.pyx":538
24229  *
24230  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
24231  * sys.exit(1) # <<<<<<<<<<<<<<
24232  *
24233  * except:
24234  */
24235  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24236  __Pyx_GOTREF(__pyx_tuple__53);
24237  __Pyx_GIVEREF(__pyx_tuple__53);
24238 
24239  /* "WaveTools.pyx":541
24240  *
24241  * except:
24242  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
24243  * sys.exit(1)
24244  * # Initialize numpy arrays for complete reconstruction
24245  */
24246  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Parameters_passed_i); if (unlikely(!__pyx_tuple__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24247  __Pyx_GOTREF(__pyx_tuple__54);
24248  __Pyx_GIVEREF(__pyx_tuple__54);
24249 
24250  /* "WaveTools.pyx":542
24251  * except:
24252  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
24253  * sys.exit(1) # <<<<<<<<<<<<<<
24254  * # Initialize numpy arrays for complete reconstruction
24255  * self.Nall = 0
24256  */
24257  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24258  __Pyx_GOTREF(__pyx_tuple__55);
24259  __Pyx_GIVEREF(__pyx_tuple__55);
24260 
24261  /* "WaveTools.pyx":577
24262  * self.kiM[NN1:NN] = self.ki
24263  * self.aiM[NN1:NN] = self.ai
24264  * self.kDirM[NN1:NN,:] =self.kDir[:,:] # <<<<<<<<<<<<<<
24265  * self.phiM[NN1:NN] = self.phi
24266  *
24267  */
24268  __pyx_slice__56 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24269  __Pyx_GOTREF(__pyx_slice__56);
24270  __Pyx_GIVEREF(__pyx_slice__56);
24271  __pyx_slice__57 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24272  __Pyx_GOTREF(__pyx_slice__57);
24273  __Pyx_GIVEREF(__pyx_slice__57);
24274  __pyx_tuple__58 = PyTuple_Pack(2, __pyx_slice__56, __pyx_slice__57); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24275  __Pyx_GOTREF(__pyx_tuple__58);
24276  __Pyx_GIVEREF(__pyx_tuple__58);
24277  __pyx_slice__59 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24278  __Pyx_GOTREF(__pyx_slice__59);
24279  __Pyx_GIVEREF(__pyx_slice__59);
24280 
24281  /* "WaveTools.pyx":667
24282  *
24283  *
24284  * temp_array = np.zeros((1,3),) # <<<<<<<<<<<<<<
24285  * temp_array[0,:] = waveDir0
24286  * directions = range(0,self.Mtot)
24287  */
24288  __pyx_tuple__60 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_3); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24289  __Pyx_GOTREF(__pyx_tuple__60);
24290  __Pyx_GIVEREF(__pyx_tuple__60);
24291  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_tuple__60); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24292  __Pyx_GOTREF(__pyx_tuple__61);
24293  __Pyx_GIVEREF(__pyx_tuple__61);
24294 
24295  /* "WaveTools.pyx":668
24296  *
24297  * temp_array = np.zeros((1,3),)
24298  * temp_array[0,:] = waveDir0 # <<<<<<<<<<<<<<
24299  * directions = range(0,self.Mtot)
24300  *
24301  */
24302  __pyx_slice__62 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24303  __Pyx_GOTREF(__pyx_slice__62);
24304  __Pyx_GIVEREF(__pyx_slice__62);
24305  __pyx_tuple__63 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__62); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24306  __Pyx_GOTREF(__pyx_tuple__63);
24307  __Pyx_GIVEREF(__pyx_tuple__63);
24308 
24309  /* "WaveTools.pyx":674
24310  * for rr in directions:
24311  * theta = self.thetas[rr]
24312  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:] # <<<<<<<<<<<<<<
24313  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
24314  *
24315  */
24316  __pyx_slice__64 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24317  __Pyx_GOTREF(__pyx_slice__64);
24318  __Pyx_GIVEREF(__pyx_slice__64);
24319  __pyx_tuple__65 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__64); if (unlikely(!__pyx_tuple__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24320  __Pyx_GOTREF(__pyx_tuple__65);
24321  __Pyx_GIVEREF(__pyx_tuple__65);
24322  __pyx_slice__66 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24323  __Pyx_GOTREF(__pyx_slice__66);
24324  __Pyx_GIVEREF(__pyx_slice__66);
24325 
24326  /* "WaveTools.pyx":675
24327  * theta = self.thetas[rr]
24328  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
24329  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:]) # <<<<<<<<<<<<<<
24330  *
24331  *
24332  */
24333  __pyx_slice__67 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24334  __Pyx_GOTREF(__pyx_slice__67);
24335  __Pyx_GIVEREF(__pyx_slice__67);
24336  __pyx_slice__68 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24337  __Pyx_GOTREF(__pyx_slice__68);
24338  __Pyx_GIVEREF(__pyx_slice__68);
24339 
24340  /* "WaveTools.pyx":684
24341  * self.phiDirs = phi
24342  * else:
24343  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N") # <<<<<<<<<<<<<<
24344  * sys.exit(1)
24345  *
24346  */
24347  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_phi_in_DirectionalW); if (unlikely(!__pyx_tuple__69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24348  __Pyx_GOTREF(__pyx_tuple__69);
24349  __Pyx_GIVEREF(__pyx_tuple__69);
24350 
24351  /* "WaveTools.pyx":685
24352  * else:
24353  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
24354  * sys.exit(1) # <<<<<<<<<<<<<<
24355  *
24356  * if (phiSymm):
24357  */
24358  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24359  __Pyx_GOTREF(__pyx_tuple__70);
24360  __Pyx_GIVEREF(__pyx_tuple__70);
24361 
24362  /* "WaveTools.pyx":689
24363  * if (phiSymm):
24364  * for i in range(0,M):
24365  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:] # <<<<<<<<<<<<<<
24366  *
24367  *
24368  */
24369  __pyx_slice__71 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24370  __Pyx_GOTREF(__pyx_slice__71);
24371  __Pyx_GIVEREF(__pyx_slice__71);
24372  __pyx_slice__72 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24373  __Pyx_GOTREF(__pyx_slice__72);
24374  __Pyx_GIVEREF(__pyx_slice__72);
24375 
24376  /* "WaveTools.pyx":702
24377  * except:
24378  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
24379  * sys.exit(1) # <<<<<<<<<<<<<<
24380  *
24381  * # Setting amplitudes
24382  */
24383  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24384  __Pyx_GOTREF(__pyx_tuple__73);
24385  __Pyx_GIVEREF(__pyx_tuple__73);
24386 
24387  /* "WaveTools.pyx":709
24388  * # Normalising integral over all frequencies
24389  * for ii in freq:
24390  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m) # <<<<<<<<<<<<<<
24391  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
24392  * # Creating amplitudes spectrum
24393  */
24394  __pyx_slice__74 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24395  __Pyx_GOTREF(__pyx_slice__74);
24396  __Pyx_GIVEREF(__pyx_slice__74);
24397  __pyx_slice__75 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24398  __Pyx_GOTREF(__pyx_slice__75);
24399  __Pyx_GIVEREF(__pyx_slice__75);
24400 
24401  /* "WaveTools.pyx":710
24402  * for ii in freq:
24403  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
24404  * self.Si_Sp[:,ii]*= self.Si_Jm[ii] # <<<<<<<<<<<<<<
24405  * # Creating amplitudes spectrum
24406  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
24407  */
24408  __pyx_slice__76 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24409  __Pyx_GOTREF(__pyx_slice__76);
24410  __Pyx_GIVEREF(__pyx_slice__76);
24411 
24412  /* "WaveTools.pyx":712
24413  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
24414  * # Creating amplitudes spectrum
24415  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim)) # <<<<<<<<<<<<<<
24416  * def eta(self, x, t):
24417  * """Free surface displacement
24418  */
24419  __pyx_slice__77 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24420  __Pyx_GOTREF(__pyx_slice__77);
24421  __Pyx_GIVEREF(__pyx_slice__77);
24422 
24423  /* "WaveTools.pyx":789
24424  * self.z0 = timeSeriesPosition[2]
24425  * else:
24426  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0) # <<<<<<<<<<<<<<
24427  * sys.exit(1)
24428  *
24429  */
24430  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Location_vector_for); if (unlikely(!__pyx_tuple__78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24431  __Pyx_GOTREF(__pyx_tuple__78);
24432  __Pyx_GIVEREF(__pyx_tuple__78);
24433 
24434  /* "WaveTools.pyx":790
24435  * else:
24436  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0)
24437  * sys.exit(1) # <<<<<<<<<<<<<<
24438  *
24439  *
24440  */
24441  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24442  __Pyx_GOTREF(__pyx_tuple__79);
24443  __Pyx_GIVEREF(__pyx_tuple__79);
24444 
24445  /* "WaveTools.pyx":806
24446  * dirCheck(self.waveDir,self.vDir)
24447  * #Reading time series
24448  * filetype = timeSeriesFile[-4:] # <<<<<<<<<<<<<<
24449  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
24450  * fid = open(timeSeriesFile,"r")
24451  */
24452  __pyx_slice__80 = PySlice_New(__pyx_int_neg_4, Py_None, Py_None); if (unlikely(!__pyx_slice__80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24453  __Pyx_GOTREF(__pyx_slice__80);
24454  __Pyx_GIVEREF(__pyx_slice__80);
24455 
24456  /* "WaveTools.pyx":811
24457  * if (filetype !=".txt") and (filetype != ".csv"):
24458  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
24459  * sys.exit(1) # <<<<<<<<<<<<<<
24460  * elif (filetype == ".csv"):
24461  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
24462  */
24463  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24464  __Pyx_GOTREF(__pyx_tuple__81);
24465  __Pyx_GIVEREF(__pyx_tuple__81);
24466 
24467  /* "WaveTools.pyx":819
24468  * #Checks for tseries file
24469  * # Only 2 columns: time & eta
24470  * ncols = len(tdata[0,:]) # <<<<<<<<<<<<<<
24471  * if ncols != 2:
24472  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
24473  */
24474  __pyx_slice__83 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24475  __Pyx_GOTREF(__pyx_slice__83);
24476  __Pyx_GIVEREF(__pyx_slice__83);
24477  __pyx_tuple__84 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__83); if (unlikely(!__pyx_tuple__84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24478  __Pyx_GOTREF(__pyx_tuple__84);
24479  __Pyx_GIVEREF(__pyx_tuple__84);
24480 
24481  /* "WaveTools.pyx":822
24482  * if ncols != 2:
24483  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
24484  * sys.exit(1) # <<<<<<<<<<<<<<
24485  * time_temp = tdata[:,0]
24486  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
24487  */
24488  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24489  __Pyx_GOTREF(__pyx_tuple__85);
24490  __Pyx_GIVEREF(__pyx_tuple__85);
24491 
24492  /* "WaveTools.pyx":823
24493  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
24494  * sys.exit(1)
24495  * time_temp = tdata[:,0] # <<<<<<<<<<<<<<
24496  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
24497  *
24498  */
24499  __pyx_slice__86 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24500  __Pyx_GOTREF(__pyx_slice__86);
24501  __Pyx_GIVEREF(__pyx_slice__86);
24502  __pyx_tuple__87 = PyTuple_Pack(2, __pyx_slice__86, __pyx_int_0); if (unlikely(!__pyx_tuple__87)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24503  __Pyx_GOTREF(__pyx_tuple__87);
24504  __Pyx_GIVEREF(__pyx_tuple__87);
24505 
24506  /* "WaveTools.pyx":835
24507  * if time_temp[i]<=time_temp[i-1]:
24508  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
24509  * sys.exit(1) # <<<<<<<<<<<<<<
24510  * #check if sampling rate is constant
24511  * if dt_temp!=self.dt:
24512  */
24513  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24514  __Pyx_GOTREF(__pyx_tuple__88);
24515  __Pyx_GIVEREF(__pyx_tuple__88);
24516 
24517  /* "WaveTools.pyx":840
24518  * doInterp = True
24519  * if(doInterp):
24520  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0) # <<<<<<<<<<<<<<
24521  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
24522  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
24523  */
24524  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Not_constant_sampli); if (unlikely(!__pyx_tuple__89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24525  __Pyx_GOTREF(__pyx_tuple__89);
24526  __Pyx_GIVEREF(__pyx_tuple__89);
24527 
24528  /* "WaveTools.pyx":842
24529  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
24530  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
24531  * self.eta = np.interp(self.time,time_temp,tdata[:,1]) # <<<<<<<<<<<<<<
24532  * else:
24533  * self.time = time_temp
24534  */
24535  __pyx_slice__90 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__90)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24536  __Pyx_GOTREF(__pyx_slice__90);
24537  __Pyx_GIVEREF(__pyx_slice__90);
24538  __pyx_tuple__91 = PyTuple_Pack(2, __pyx_slice__90, __pyx_int_1); if (unlikely(!__pyx_tuple__91)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24539  __Pyx_GOTREF(__pyx_tuple__91);
24540  __Pyx_GIVEREF(__pyx_tuple__91);
24541 
24542  /* "WaveTools.pyx":845
24543  * else:
24544  * self.time = time_temp
24545  * self.eta = tdata[:,1] # <<<<<<<<<<<<<<
24546  *
24547  * self.t0 = self.time[0]
24548  */
24549  __pyx_slice__92 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__92)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24550  __Pyx_GOTREF(__pyx_slice__92);
24551  __Pyx_GIVEREF(__pyx_slice__92);
24552  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_slice__92, __pyx_int_1); if (unlikely(!__pyx_tuple__93)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24553  __Pyx_GOTREF(__pyx_tuple__93);
24554  __Pyx_GIVEREF(__pyx_tuple__93);
24555 
24556  /* "WaveTools.pyx":864
24557  * Nf = self.N
24558  * self.nfft=len(self.time)
24559  * logEvent("WaveTools.py: performing a direct series decomposition") # <<<<<<<<<<<<<<
24560  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
24561  * self.ai = self.decomp[1]
24562  */
24563  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_performing_a_direct); if (unlikely(!__pyx_tuple__94)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24564  __Pyx_GOTREF(__pyx_tuple__94);
24565  __Pyx_GIVEREF(__pyx_tuple__94);
24566 
24567  /* "WaveTools.pyx":878
24568  * self.kDir = np.zeros((len(self.ki),3),"d")
24569  * for ii in range(len(self.ki)):
24570  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
24571  *
24572  *
24573  */
24574  __pyx_slice__95 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__95)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24575  __Pyx_GOTREF(__pyx_slice__95);
24576  __Pyx_GIVEREF(__pyx_slice__95);
24577  __pyx_slice__96 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__96)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24578  __Pyx_GOTREF(__pyx_slice__96);
24579  __Pyx_GIVEREF(__pyx_slice__96);
24580 
24581  /* "WaveTools.pyx":884
24582  * else:
24583  * if (window_params==None):
24584  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary") # <<<<<<<<<<<<<<
24585  * sys.exit(1)
24586  * try:
24587  */
24588  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Set_parameters_for); if (unlikely(!__pyx_tuple__97)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24589  __Pyx_GOTREF(__pyx_tuple__97);
24590  __Pyx_GIVEREF(__pyx_tuple__97);
24591 
24592  /* "WaveTools.pyx":885
24593  * if (window_params==None):
24594  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
24595  * sys.exit(1) # <<<<<<<<<<<<<<
24596  * try:
24597  * self.Nwaves = window_params["Nwaves"]
24598  */
24599  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__98)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24600  __Pyx_GOTREF(__pyx_tuple__98);
24601  __Pyx_GIVEREF(__pyx_tuple__98);
24602 
24603  /* "WaveTools.pyx":889
24604  * self.Nwaves = window_params["Nwaves"]
24605  * except:
24606  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary") # <<<<<<<<<<<<<<
24607  * sys.exit(1)
24608  *
24609  */
24610  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Dictionary_key_Nwav); if (unlikely(!__pyx_tuple__99)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24611  __Pyx_GOTREF(__pyx_tuple__99);
24612  __Pyx_GIVEREF(__pyx_tuple__99);
24613 
24614  /* "WaveTools.pyx":890
24615  * except:
24616  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
24617  * sys.exit(1) # <<<<<<<<<<<<<<
24618  *
24619  * try:
24620  */
24621  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24622  __Pyx_GOTREF(__pyx_tuple__100);
24623  __Pyx_GIVEREF(__pyx_tuple__100);
24624 
24625  /* "WaveTools.pyx":895
24626  * self.Tm = window_params["Tm"]
24627  * except:
24628  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary") # <<<<<<<<<<<<<<
24629  * sys.exit(1)
24630  *
24631  */
24632  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Dictionary_key_Tm_m); if (unlikely(!__pyx_tuple__101)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24633  __Pyx_GOTREF(__pyx_tuple__101);
24634  __Pyx_GIVEREF(__pyx_tuple__101);
24635 
24636  /* "WaveTools.pyx":896
24637  * except:
24638  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
24639  * sys.exit(1) # <<<<<<<<<<<<<<
24640  *
24641  * try:
24642  */
24643  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__102)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24644  __Pyx_GOTREF(__pyx_tuple__102);
24645  __Pyx_GIVEREF(__pyx_tuple__102);
24646 
24647  /* "WaveTools.pyx":901
24648  * self.windowName = window_params["Window"]
24649  * except:
24650  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary") # <<<<<<<<<<<<<<
24651  * sys.exit(1)
24652  *
24653  */
24654  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Dictionary_key_Wind); if (unlikely(!__pyx_tuple__103)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24655  __Pyx_GOTREF(__pyx_tuple__103);
24656  __Pyx_GIVEREF(__pyx_tuple__103);
24657 
24658  /* "WaveTools.pyx":902
24659  * except:
24660  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
24661  * sys.exit(1) # <<<<<<<<<<<<<<
24662  *
24663  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
24664  */
24665  __pyx_tuple__104 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__104)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24666  __Pyx_GOTREF(__pyx_tuple__104);
24667  __Pyx_GIVEREF(__pyx_tuple__104);
24668 
24669  /* "WaveTools.pyx":905
24670  *
24671  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
24672  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )") # <<<<<<<<<<<<<<
24673  * sys.exit(1)
24674  *
24675  */
24676  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Reconstruction_is_e); if (unlikely(!__pyx_tuple__105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24677  __Pyx_GOTREF(__pyx_tuple__105);
24678  __Pyx_GIVEREF(__pyx_tuple__105);
24679 
24680  /* "WaveTools.pyx":906
24681  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
24682  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
24683  * sys.exit(1) # <<<<<<<<<<<<<<
24684  *
24685  *
24686  */
24687  __pyx_tuple__106 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__106)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24688  __Pyx_GOTREF(__pyx_tuple__106);
24689  __Pyx_GIVEREF(__pyx_tuple__106);
24690 
24691  /* "WaveTools.pyx":912
24692  * validWindows = [costap, tophat]
24693  * wind_filt = loadExistingFunction(self.windowName, validWindows)
24694  * logEvent("WaveTools.py: performing series decomposition with spectral windows") # <<<<<<<<<<<<<<
24695  * # Portion of overlap, compared to window time
24696  * try:
24697  */
24698  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_performing_series_d); if (unlikely(!__pyx_tuple__107)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24699  __Pyx_GOTREF(__pyx_tuple__107);
24700  __Pyx_GIVEREF(__pyx_tuple__107);
24701 
24702  /* "WaveTools.pyx":918
24703  * except:
24704  * self.overlap = 0.25
24705  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)") # <<<<<<<<<<<<<<
24706  *
24707  * try:
24708  */
24709  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Overlap_entry_in_wi); if (unlikely(!__pyx_tuple__108)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24710  __Pyx_GOTREF(__pyx_tuple__108);
24711  __Pyx_GIVEREF(__pyx_tuple__108);
24712 
24713  /* "WaveTools.pyx":924
24714  * except:
24715  * self.cutoff= 0.1
24716  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)") # <<<<<<<<<<<<<<
24717  *
24718  *
24719  */
24720  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Cutoff_entry_in_win); if (unlikely(!__pyx_tuple__109)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24721  __Pyx_GOTREF(__pyx_tuple__109);
24722  __Pyx_GIVEREF(__pyx_tuple__109);
24723 
24724  /* "WaveTools.pyx":932
24725  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
24726  * if (self.handover > 0.9 * self.overlap):
24727  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap") # <<<<<<<<<<<<<<
24728  * sys.exit(1)
24729  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
24730  */
24731  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Window_handover_is); if (unlikely(!__pyx_tuple__110)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24732  __Pyx_GOTREF(__pyx_tuple__110);
24733  __Pyx_GIVEREF(__pyx_tuple__110);
24734 
24735  /* "WaveTools.pyx":933
24736  * if (self.handover > 0.9 * self.overlap):
24737  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
24738  * sys.exit(1) # <<<<<<<<<<<<<<
24739  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
24740  * self.Toverlap = self.overlap * self.Twindow
24741  */
24742  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__111)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24743  __Pyx_GOTREF(__pyx_tuple__111);
24744  __Pyx_GIVEREF(__pyx_tuple__111);
24745 
24746  /* "WaveTools.pyx":945
24747  * # Setting where each window starts and ends
24748  * for jj in range(self.Nwindows):
24749  * span = np.zeros(2,"d") # <<<<<<<<<<<<<<
24750  * tfirst = self.time[0] + self.Twindow
24751  * tlast = self.time[-1] - self.Twindow
24752  */
24753  __pyx_tuple__112 = PyTuple_Pack(2, __pyx_int_2, __pyx_n_s_d); if (unlikely(!__pyx_tuple__112)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24754  __Pyx_GOTREF(__pyx_tuple__112);
24755  __Pyx_GIVEREF(__pyx_tuple__112);
24756 
24757  /* "WaveTools.pyx":969
24758  *
24759  * for wind in self.windows_rec:
24760  * self.nfft=len(wind[:,0]) # <<<<<<<<<<<<<<
24761  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
24762  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
24763  */
24764  __pyx_slice__113 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__113)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24765  __Pyx_GOTREF(__pyx_slice__113);
24766  __Pyx_GIVEREF(__pyx_slice__113);
24767  __pyx_tuple__114 = PyTuple_Pack(2, __pyx_slice__113, __pyx_int_0); if (unlikely(!__pyx_tuple__114)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24768  __Pyx_GOTREF(__pyx_tuple__114);
24769  __Pyx_GIVEREF(__pyx_tuple__114);
24770 
24771  /* "WaveTools.pyx":970
24772  * for wind in self.windows_rec:
24773  * self.nfft=len(wind[:,0])
24774  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff) # <<<<<<<<<<<<<<
24775  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
24776  * self.N = min(self.N, len(decomp[0]))
24777  */
24778  __pyx_slice__115 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__115)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24779  __Pyx_GOTREF(__pyx_slice__115);
24780  __Pyx_GIVEREF(__pyx_slice__115);
24781  __pyx_tuple__116 = PyTuple_Pack(2, __pyx_slice__115, __pyx_int_1); if (unlikely(!__pyx_tuple__116)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24782  __Pyx_GOTREF(__pyx_tuple__116);
24783  __Pyx_GIVEREF(__pyx_tuple__116);
24784 
24785  /* "WaveTools.pyx":971
24786  * self.nfft=len(wind[:,0])
24787  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
24788  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt) # <<<<<<<<<<<<<<
24789  * self.N = min(self.N, len(decomp[0]))
24790  * Nftemp = self.N
24791  */
24792  __pyx_slice__117 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__117)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24793  __Pyx_GOTREF(__pyx_slice__117);
24794  __Pyx_GIVEREF(__pyx_slice__117);
24795  __pyx_tuple__118 = PyTuple_Pack(2, __pyx_slice__117, __pyx_int_0); if (unlikely(!__pyx_tuple__118)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24796  __Pyx_GOTREF(__pyx_tuple__118);
24797  __Pyx_GIVEREF(__pyx_tuple__118);
24798  __pyx_slice__119 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__119)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24799  __Pyx_GOTREF(__pyx_slice__119);
24800  __Pyx_GIVEREF(__pyx_slice__119);
24801  __pyx_tuple__120 = PyTuple_Pack(2, __pyx_slice__119, __pyx_int_1); if (unlikely(!__pyx_tuple__120)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24802  __Pyx_GOTREF(__pyx_tuple__120);
24803  __Pyx_GIVEREF(__pyx_tuple__120);
24804 
24805  /* "WaveTools.pyx":991
24806  * kDir = np.zeros((len(ki),3),"d")
24807  * for ii in range(len(ki)):
24808  * kDir[ii,:] = ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
24809  * decomp.append(kDir)
24810  * decomp.append(ki)
24811  */
24812  __pyx_slice__121 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24813  __Pyx_GOTREF(__pyx_slice__121);
24814  __Pyx_GIVEREF(__pyx_slice__121);
24815  __pyx_slice__122 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__122)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24816  __Pyx_GOTREF(__pyx_slice__122);
24817  __Pyx_GIVEREF(__pyx_slice__122);
24818 
24819  /* "WaveTools.pyx":1061
24820  * phi = self.decompose_window[Nw][2]
24821  * kDir = self.decompose_window[Nw][4]
24822  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
24823  * Eta=0.
24824  * for ii in range(0,self.Nf):
24825  */
24826  __pyx_tuple__123 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__123)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24827  __Pyx_GOTREF(__pyx_tuple__123);
24828  __Pyx_GIVEREF(__pyx_tuple__123);
24829 
24830  /* "WaveTools.pyx":1081
24831  * kDir = self.decompose_window[Nw][4]
24832  * ki = self.decompose_window[Nw][5]
24833  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
24834  * U=0.
24835  * for ii in range(0,self.Nf):
24836  */
24837  __pyx_tuple__124 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__124)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24838  __Pyx_GOTREF(__pyx_tuple__124);
24839  __Pyx_GIVEREF(__pyx_tuple__124);
24840 
24841  /* "WaveTools.pyx":21
24842  *
24843  *
24844  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
24845  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
24846  * param: funcName : function name in form of string under consideration
24847  */
24848  __pyx_tuple__125 = PyTuple_Pack(5, __pyx_n_s_funcName, __pyx_n_s_validFunctions, __pyx_n_s_funcNames, __pyx_n_s_func, __pyx_n_s_func_ret); if (unlikely(!__pyx_tuple__125)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24849  __Pyx_GOTREF(__pyx_tuple__125);
24850  __Pyx_GIVEREF(__pyx_tuple__125);
24851  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_loadExistingFunction, 21, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24852 
24853  /* "WaveTools.pyx":39
24854  *
24855  *
24856  * def setVertDir(g): # <<<<<<<<<<<<<<
24857  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
24858  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
24859  */
24860  __pyx_tuple__127 = PyTuple_Pack(1, __pyx_n_s_g); if (unlikely(!__pyx_tuple__127)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24861  __Pyx_GOTREF(__pyx_tuple__127);
24862  __Pyx_GIVEREF(__pyx_tuple__127);
24863  __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_setVertDir, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24864 
24865  /* "WaveTools.pyx":45
24866  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
24867  *
24868  * def setDirVector(vector): # <<<<<<<<<<<<<<
24869  * """ Returns the direction of a vector in the form of a unit vector
24870  * param: vector : Any vector with three components
24871  */
24872  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_n_s_vector); if (unlikely(!__pyx_tuple__129)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24873  __Pyx_GOTREF(__pyx_tuple__129);
24874  __Pyx_GIVEREF(__pyx_tuple__129);
24875  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_setDirVector, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24876 
24877  /* "WaveTools.pyx":51
24878  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
24879  *
24880  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
24881  * """ Checks if to vectors are vertical and returns system exit if not
24882  * param: v1 : 1st vector [-] with three components
24883  */
24884  __pyx_tuple__131 = PyTuple_Pack(3, __pyx_n_s_v1, __pyx_n_s_v2, __pyx_n_s_dircheck); if (unlikely(!__pyx_tuple__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24885  __Pyx_GOTREF(__pyx_tuple__131);
24886  __Pyx_GIVEREF(__pyx_tuple__131);
24887  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_dirCheck, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24888 
24889  /* "WaveTools.pyx":63
24890  * else:
24891  * return None
24892  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
24893  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
24894  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
24895  */
24896  __pyx_tuple__133 = PyTuple_Pack(3, __pyx_n_s_fi, __pyx_n_s_df, __pyx_n_s_fim_tmp); if (unlikely(!__pyx_tuple__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24897  __Pyx_GOTREF(__pyx_tuple__133);
24898  __Pyx_GIVEREF(__pyx_tuple__133);
24899  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_reduceToIntervals, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24900 
24901  /* "WaveTools.pyx":72
24902  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
24903  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
24904  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
24905  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
24906  * param: a : y(x) function [-]
24907  */
24908  __pyx_tuple__135 = PyTuple_Pack(2, __pyx_n_s_a, __pyx_n_s_x); if (unlikely(!__pyx_tuple__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24909  __Pyx_GOTREF(__pyx_tuple__135);
24910  __Pyx_GIVEREF(__pyx_tuple__135);
24911  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_returnRectangles, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24912 
24913  /* "WaveTools.pyx":78
24914  * """
24915  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
24916  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
24917  * """ Returns \delta y of y(x,z) using the rectangle method
24918  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
24919  */
24920  __pyx_tuple__137 = PyTuple_Pack(6, __pyx_n_s_a, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_ai, __pyx_n_s_ii, __pyx_n_s_jj); if (unlikely(!__pyx_tuple__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24921  __Pyx_GOTREF(__pyx_tuple__137);
24922  __Pyx_GIVEREF(__pyx_tuple__137);
24923  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_returnRectangles3D, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24924 
24925  /* "WaveTools.pyx":92
24926  * ai[:,jj] *= (x[1:]-x[:-1])
24927  * return ai
24928  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
24929  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
24930  * param: Sint : Sint(th) function [-]
24931  */
24932  __pyx_tuple__139 = PyTuple_Pack(3, __pyx_n_s_Sint, __pyx_n_s_th, __pyx_n_s_G0); if (unlikely(!__pyx_tuple__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24933  __Pyx_GOTREF(__pyx_tuple__139);
24934  __Pyx_GIVEREF(__pyx_tuple__139);
24935  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_normIntegral, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24936 
24937  /* "WaveTools.pyx":102
24938  *
24939  *
24940  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
24941  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
24942  * :param kDir: wave number vector [1/L] with three components
24943  */
24944  __pyx_tuple__141 = PyTuple_Pack(7, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_kDir, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_amplitude, __pyx_n_s_phase); if (unlikely(!__pyx_tuple__141)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24945  __Pyx_GOTREF(__pyx_tuple__141);
24946  __Pyx_GIVEREF(__pyx_tuple__141);
24947  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(6, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta_mode, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24948 
24949  /* "WaveTools.pyx":113
24950  *
24951  *
24952  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
24953  * """Returns a single frequency mode for velocity at point x,y,z,t
24954  * :param kDir: wave number vector [1/L] with three components
24955  */
24956  __pyx_tuple__143 = PyTuple_Pack(18, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_kDir, __pyx_n_s_kAbs, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_amplitude, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_g, __pyx_n_s_vDir, __pyx_n_s_phase, __pyx_n_s_Z, __pyx_n_s_UH, __pyx_n_s_UV, __pyx_n_s_ii, __pyx_n_s_waveDir, __pyx_n_s_V); if (unlikely(!__pyx_tuple__143)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24957  __Pyx_GOTREF(__pyx_tuple__143);
24958  __Pyx_GIVEREF(__pyx_tuple__143);
24959  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(11, 0, 18, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_vel_mode, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24960 
24961  /* "WaveTools.pyx":142
24962  *
24963  *
24964  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
24965  * """sigma function for JONSWAP spectrum
24966  * http://www.wikiwaves.org/Ocean-Wave_Sectra
24967  */
24968  __pyx_tuple__145 = PyTuple_Pack(3, __pyx_n_s_omega, __pyx_n_s_omega0, __pyx_n_s_sigmaReturn); if (unlikely(!__pyx_tuple__145)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24969  __Pyx_GOTREF(__pyx_tuple__145);
24970  __Pyx_GIVEREF(__pyx_tuple__145);
24971  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_sigma, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24972 
24973  /* "WaveTools.pyx":150
24974  *
24975  *
24976  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
24977  * """The wave spectrum from Joint North Sea Wave Observation Project
24978  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
24979  */
24980  __pyx_tuple__147 = PyTuple_Pack(11, __pyx_n_s_f, __pyx_n_s_f0, __pyx_n_s_Hs, __pyx_n_s_gamma, __pyx_n_s_TMA, __pyx_n_s_depth, __pyx_n_s_Tp, __pyx_n_s_bj, __pyx_n_s_r, __pyx_n_s_tma, __pyx_n_s_k); if (unlikely(!__pyx_tuple__147)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24981  __Pyx_GOTREF(__pyx_tuple__147);
24982  __Pyx_GIVEREF(__pyx_tuple__147);
24983  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(6, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__147, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_JONSWAP, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24984 
24985  /* "WaveTools.pyx":174
24986  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
24987  *
24988  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
24989  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
24990  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
24991  */
24992  __pyx_tuple__149 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_f0, __pyx_n_s_Hs); if (unlikely(!__pyx_tuple__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24993  __Pyx_GOTREF(__pyx_tuple__149);
24994  __Pyx_GIVEREF(__pyx_tuple__149);
24995  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_PM_mod, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24996 
24997  /* "WaveTools.pyx":186
24998  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
24999  *
25000  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
25001  * """The cos2s wave directional Spread
25002  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
25003  */
25004  __pyx_tuple__151 = PyTuple_Pack(5, __pyx_n_s_theta, __pyx_n_s_f, __pyx_n_s_s, __pyx_n_s_fun, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25005  __Pyx_GOTREF(__pyx_tuple__151);
25006  __Pyx_GIVEREF(__pyx_tuple__151);
25007  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_cos2s, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25008 
25009  /* "WaveTools.pyx":197
25010  * fun[:,ii] = np.cos(theta/2)**(2*s)
25011  * return fun
25012  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
25013  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
25014  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
25015  */
25016  __pyx_tuple__153 = PyTuple_Pack(7, __pyx_n_s_theta, __pyx_n_s_fi, __pyx_n_s_f0, __pyx_n_s_smax, __pyx_n_s_s, __pyx_n_s_ii, __pyx_n_s_fun); if (unlikely(!__pyx_tuple__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25017  __Pyx_GOTREF(__pyx_tuple__153);
25018  __Pyx_GIVEREF(__pyx_tuple__153);
25019  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_mitsuyasu, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25020 
25021  /* "WaveTools.pyx":217
25022  *
25023  *
25024  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
25025  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
25026  *
25027  */
25028  __pyx_tuple__155 = PyTuple_Pack(7, __pyx_n_s_w, __pyx_n_s_d, __pyx_n_s_g, __pyx_n_s_niter, __pyx_n_s_w_aux, __pyx_n_s_K, __pyx_n_s_jj); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25029  __Pyx_GOTREF(__pyx_tuple__155);
25030  __Pyx_GIVEREF(__pyx_tuple__155);
25031  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_dispersion, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25032 
25033  /* "WaveTools.pyx":246
25034  *
25035  *
25036  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
25037  * """ returns a top hat filter
25038  * :param l: array length
25039  */
25040  __pyx_tuple__157 = PyTuple_Pack(4, __pyx_n_s_l, __pyx_n_s_cutoff, __pyx_n_s_a, __pyx_n_s_cut); if (unlikely(!__pyx_tuple__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25041  __Pyx_GOTREF(__pyx_tuple__157);
25042  __Pyx_GIVEREF(__pyx_tuple__157);
25043  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_tophat, 246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25044 
25045  /* "WaveTools.pyx":257
25046  * return a
25047  *
25048  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
25049  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
25050  * :param l: array length
25051  */
25052  __pyx_tuple__159 = PyTuple_Pack(5, __pyx_n_s_l, __pyx_n_s_cutoff, __pyx_n_s_npoints, __pyx_n_s_wind, __pyx_n_s_k); if (unlikely(!__pyx_tuple__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25053  __Pyx_GOTREF(__pyx_tuple__159);
25054  __Pyx_GIVEREF(__pyx_tuple__159);
25055  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_costap, 257, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25056 
25057  /* "WaveTools.pyx":270
25058  * return wind
25059  *
25060  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
25061  * """ This function does a spectral decomposition of a time series with constant sampling.
25062  * It returns a list with results with four entries:
25063  */
25064  __pyx_tuple__161 = PyTuple_Pack(13, __pyx_n_s_time, __pyx_n_s_eta, __pyx_n_s_dt, __pyx_n_s_nfft, __pyx_n_s_results, __pyx_n_s_fft_x, __pyx_n_s_freq, __pyx_n_s_iend, __pyx_n_s_setup, __pyx_n_s_aa, __pyx_n_s_ww, __pyx_n_s_pp, __pyx_n_s_k); if (unlikely(!__pyx_tuple__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25065  __Pyx_GOTREF(__pyx_tuple__161);
25066  __Pyx_GIVEREF(__pyx_tuple__161);
25067  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_decompose_tseries, 270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25068 
25069  /* "WaveTools.pyx":324
25070  * :phi0: Phase of the wave
25071  * """
25072  * def __init__(self, # <<<<<<<<<<<<<<
25073  * period,
25074  * waveHeight,
25075  */
25076  __pyx_tuple__163 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_period, __pyx_n_s_waveHeight, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_g, __pyx_n_s_waveDir, __pyx_n_s_wavelength, __pyx_n_s_waveType, __pyx_n_s_Ycoeff, __pyx_n_s_Bcoeff, __pyx_n_s_meanVelocity, __pyx_n_s_phi0); if (unlikely(!__pyx_tuple__163)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25077  __Pyx_GOTREF(__pyx_tuple__163);
25078  __Pyx_GIVEREF(__pyx_tuple__163);
25079  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(13, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25080 
25081  /* "WaveTools.pyx":384
25082  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
25083  * sys.exit(1)
25084  * def eta(self, x, t): # <<<<<<<<<<<<<<
25085  * if self.waveType is "Linear":
25086  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
25087  */
25088  __pyx_tuple__165 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_HH, __pyx_n_s_ii, __pyx_n_s_Y); if (unlikely(!__pyx_tuple__165)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25089  __Pyx_GOTREF(__pyx_tuple__165);
25090  __Pyx_GIVEREF(__pyx_tuple__165);
25091  __pyx_codeobj__166 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__166)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25092 
25093  /* "WaveTools.pyx":395
25094  * return HH/self.k
25095  *
25096  * def u(self, x, t): # <<<<<<<<<<<<<<
25097  * if self.waveType is "Linear":
25098  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
25099  */
25100  __pyx_tuple__167 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Ufenton, __pyx_n_s_ii, __pyx_n_s_B, __pyx_n_s_wmode, __pyx_n_s_kmode, __pyx_n_s_kdir, __pyx_n_s_amp); if (unlikely(!__pyx_tuple__167)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25101  __Pyx_GOTREF(__pyx_tuple__167);
25102  __Pyx_GIVEREF(__pyx_tuple__167);
25103  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(3, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 395, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25104 
25105  /* "WaveTools.pyx":426
25106  * """
25107  *
25108  * def __init__(self, # <<<<<<<<<<<<<<
25109  * Tp,
25110  * Hs,
25111  */
25112  __pyx_tuple__169 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spectral_params, __pyx_n_s_phi, __pyx_n_s_validSpectra, __pyx_n_s_spec_fun, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__169)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25113  __Pyx_GOTREF(__pyx_tuple__169);
25114  __Pyx_GIVEREF(__pyx_tuple__169);
25115  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(12, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25116  __pyx_tuple__171 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25117  __Pyx_GOTREF(__pyx_tuple__171);
25118  __Pyx_GIVEREF(__pyx_tuple__171);
25119 
25120  /* "WaveTools.pyx":489
25121  * for ii in range(3):
25122  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
25123  * def eta(self, x, t): # <<<<<<<<<<<<<<
25124  * """Free surface displacement
25125  *
25126  */
25127  __pyx_tuple__172 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__172)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25128  __Pyx_GOTREF(__pyx_tuple__172);
25129  __Pyx_GIVEREF(__pyx_tuple__172);
25130  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25131 
25132  /* "WaveTools.pyx":500
25133  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25134  *
25135  * def u(self, x, t): # <<<<<<<<<<<<<<
25136  * """x-component of velocity
25137  *
25138  */
25139  __pyx_tuple__174 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__174)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25140  __Pyx_GOTREF(__pyx_tuple__174);
25141  __Pyx_GIVEREF(__pyx_tuple__174);
25142  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25143 
25144  /* "WaveTools.pyx":517
25145  * :param Nspectra, number of spectra
25146  * """
25147  * def __init__(self, # <<<<<<<<<<<<<<
25148  * Nspectra,
25149  * Tp, # np array with
25150  */
25151  __pyx_tuple__176 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_Nspectra, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spectral_params, __pyx_n_s_phi, __pyx_n_s_nn, __pyx_n_s_NN, __pyx_n_s_kk, __pyx_n_s_NN1); if (unlikely(!__pyx_tuple__176)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25152  __Pyx_GOTREF(__pyx_tuple__176);
25153  __Pyx_GIVEREF(__pyx_tuple__176);
25154  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(13, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__176, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 517, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25155 
25156  /* "WaveTools.pyx":581
25157  *
25158  *
25159  * def eta(self, x, t): # <<<<<<<<<<<<<<
25160  * """Free surface displacement
25161  *
25162  */
25163  __pyx_tuple__178 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25164  __Pyx_GOTREF(__pyx_tuple__178);
25165  __Pyx_GIVEREF(__pyx_tuple__178);
25166  __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25167 
25168  /* "WaveTools.pyx":592
25169  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25170  *
25171  * def u(self, x, t): # <<<<<<<<<<<<<<
25172  * """x-component of velocity
25173  *
25174  */
25175  __pyx_tuple__180 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__180)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25176  __Pyx_GOTREF(__pyx_tuple__180);
25177  __Pyx_GIVEREF(__pyx_tuple__180);
25178  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__180, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 592, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25179 
25180  /* "WaveTools.pyx":616
25181  *
25182  * """
25183  * def __init__(self, # <<<<<<<<<<<<<<
25184  * M, #half bin of frequencies
25185  * Tp, # np array with
25186  */
25187  __pyx_tuple__182 = PyTuple_Pack(26, __pyx_n_s_self, __pyx_n_s_M, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir0, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spreadName, __pyx_n_s_spectral_params, __pyx_n_s_spread_params, __pyx_n_s_phi, __pyx_n_s_phiSymm, __pyx_n_s_validSpread, __pyx_n_s_spread_fun, __pyx_n_s_rotation3D, __pyx_n_s_temp_array, __pyx_n_s_directions, __pyx_n_s_rr, __pyx_n_s_theta, __pyx_n_s_i, __pyx_n_s_freq, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__182)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25188  __Pyx_GOTREF(__pyx_tuple__182);
25189  __Pyx_GIVEREF(__pyx_tuple__182);
25190  __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(16, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 616, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25191  __pyx_tuple__184 = PyTuple_Pack(4, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__184)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25192  __Pyx_GOTREF(__pyx_tuple__184);
25193  __Pyx_GIVEREF(__pyx_tuple__184);
25194 
25195  /* "WaveTools.pyx":713
25196  * # Creating amplitudes spectrum
25197  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
25198  * def eta(self, x, t): # <<<<<<<<<<<<<<
25199  * """Free surface displacement
25200  *
25201  */
25202  __pyx_tuple__185 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_jj, __pyx_n_s_ii, __pyx_n_s_kDiri); if (unlikely(!__pyx_tuple__185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25203  __Pyx_GOTREF(__pyx_tuple__185);
25204  __Pyx_GIVEREF(__pyx_tuple__185);
25205  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 713, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25206 
25207  /* "WaveTools.pyx":726
25208  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25209  *
25210  * def u(self, x, t): # <<<<<<<<<<<<<<
25211  * """x-component of velocity
25212  *
25213  */
25214  __pyx_tuple__187 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_jj, __pyx_n_s_ii, __pyx_n_s_kDiri); if (unlikely(!__pyx_tuple__187)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25215  __Pyx_GOTREF(__pyx_tuple__187);
25216  __Pyx_GIVEREF(__pyx_tuple__187);
25217  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__187, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 726, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25218 
25219  /* "WaveTools.pyx":763
25220  * """
25221  *
25222  * def __init__(self, # <<<<<<<<<<<<<<
25223  * timeSeriesFile, # e.g.= "Timeseries.txt",
25224  * skiprows,
25225  */
25226  __pyx_tuple__189 = PyTuple_Pack(40, __pyx_n_s_self, __pyx_n_s_timeSeriesFile, __pyx_n_s_skiprows, __pyx_n_s_timeSeriesPosition, __pyx_n_s_depth, __pyx_n_s_N, __pyx_n_s_mwl, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_cutoffTotal, __pyx_n_s_rec_direct, __pyx_n_s_window_params, __pyx_n_s_filetype, __pyx_n_s_fid, __pyx_n_s_tdata, __pyx_n_s_ncols, __pyx_n_s_time_temp, __pyx_n_s_doInterp, __pyx_n_s_i, __pyx_n_s_dt_temp, __pyx_n_s_Nf, __pyx_n_s_ipeak, __pyx_n_s_imax, __pyx_n_s_imin, __pyx_n_s_ii, __pyx_n_s_validWindows, __pyx_n_s_wind_filt, __pyx_n_s_diff, __pyx_n_s_jj, __pyx_n_s_span, __pyx_n_s_tfirst, __pyx_n_s_tlast, __pyx_n_s_ispan1, __pyx_n_s_ispan2, __pyx_n_s_tstart, __pyx_n_s_wind, __pyx_n_s_decomp, __pyx_n_s_Nftemp, __pyx_n_s_ki, __pyx_n_s_kDir); if (unlikely(!__pyx_tuple__189)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25227  __Pyx_GOTREF(__pyx_tuple__189);
25228  __Pyx_GIVEREF(__pyx_tuple__189);
25229  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(12, 0, 40, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__189, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25230  __pyx_tuple__191 = PyTuple_Pack(3, ((PyObject*)__pyx_float_0_01), ((PyObject *)Py_True), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__191)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25231  __Pyx_GOTREF(__pyx_tuple__191);
25232  __Pyx_GIVEREF(__pyx_tuple__191);
25233 
25234  /* "WaveTools.pyx":1019
25235  * # self.Noverlap = int(self.Npw *0.25)
25236  *
25237  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
25238  * """Free surface displacement
25239  * :param x: floating point x coordinate
25240  */
25241  __pyx_tuple__192 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__192)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25242  __Pyx_GOTREF(__pyx_tuple__192);
25243  __Pyx_GIVEREF(__pyx_tuple__192);
25244  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_etaDirect, 1019, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25245 
25246  /* "WaveTools.pyx":1029
25247  * return Eta
25248  *
25249  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
25250  * """x-component of velocity
25251  *
25252  */
25253  __pyx_tuple__194 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__194)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25254  __Pyx_GOTREF(__pyx_tuple__194);
25255  __Pyx_GIVEREF(__pyx_tuple__194);
25256  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_uDirect, 1029, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25257 
25258  /* "WaveTools.pyx":1042
25259  * return U
25260  *
25261  * def findWindow(self,t): # <<<<<<<<<<<<<<
25262  * term = 1. - self.handover
25263  * if t-self.time[0] >= term*self.Twindow:
25264  */
25265  __pyx_tuple__196 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_t, __pyx_n_s_term, __pyx_n_s_Nw); if (unlikely(!__pyx_tuple__196)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25266  __Pyx_GOTREF(__pyx_tuple__196);
25267  __Pyx_GIVEREF(__pyx_tuple__196);
25268  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__196, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_findWindow, 1042, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25269 
25270  /* "WaveTools.pyx":1052
25271  * return Nw
25272  *
25273  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
25274  * """Free surface displacement
25275  * :param x: floating point x coordinate
25276  */
25277  __pyx_tuple__198 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Nw, __pyx_n_s_ai, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_kDir, __pyx_n_s_t0, __pyx_n_s_Eta, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__198)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25278  __Pyx_GOTREF(__pyx_tuple__198);
25279  __Pyx_GIVEREF(__pyx_tuple__198);
25280  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(3, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__198, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_etaWindow, 1052, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25281 
25282  /* "WaveTools.pyx":1068
25283  * return Eta
25284  *
25285  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
25286  * """x-component of velocity
25287  *
25288  */
25289  __pyx_tuple__200 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Nw, __pyx_n_s_ai, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_kDir, __pyx_n_s_ki, __pyx_n_s_t0, __pyx_n_s_U, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__200)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25290  __Pyx_GOTREF(__pyx_tuple__200);
25291  __Pyx_GIVEREF(__pyx_tuple__200);
25292  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_uWindow, 1068, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25293  __Pyx_RefNannyFinishContext();
25294  return 0;
25295  __pyx_L1_error:;
25296  __Pyx_RefNannyFinishContext();
25297  return -1;
25298 }
25299 
25300 static int __Pyx_InitGlobals(void) {
25301  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
25302  __pyx_float_0_ = PyFloat_FromDouble(0.); if (unlikely(!__pyx_float_0_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25303  __pyx_float_1_ = PyFloat_FromDouble(1.); if (unlikely(!__pyx_float_1_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25304  __pyx_float_2_ = PyFloat_FromDouble(2.); if (unlikely(!__pyx_float_2_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25305  __pyx_float_4_ = PyFloat_FromDouble(4.); if (unlikely(!__pyx_float_4_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25306  __pyx_float_0_1 = PyFloat_FromDouble(0.1); if (unlikely(!__pyx_float_0_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25307  __pyx_float_0_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_float_0_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25308  __pyx_float_0_9 = PyFloat_FromDouble(0.9); if (unlikely(!__pyx_float_0_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25309  __pyx_float_1_1 = PyFloat_FromDouble(1.1); if (unlikely(!__pyx_float_1_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25310  __pyx_float_1_9 = PyFloat_FromDouble(1.9); if (unlikely(!__pyx_float_1_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25311  __pyx_float_2_0 = PyFloat_FromDouble(2.0); if (unlikely(!__pyx_float_2_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25312  __pyx_float_3_3 = PyFloat_FromDouble(3.3); if (unlikely(!__pyx_float_3_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25313  __pyx_float_0_01 = PyFloat_FromDouble(0.01); if (unlikely(!__pyx_float_0_01)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25314  __pyx_float_0_07 = PyFloat_FromDouble(0.07); if (unlikely(!__pyx_float_0_07)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25315  __pyx_float_0_09 = PyFloat_FromDouble(0.09); if (unlikely(!__pyx_float_0_09)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25316  __pyx_float_0_23 = PyFloat_FromDouble(0.23); if (unlikely(!__pyx_float_0_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25317  __pyx_float_0_25 = PyFloat_FromDouble(0.25); if (unlikely(!__pyx_float_0_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25318  __pyx_float_9_81 = PyFloat_FromDouble(9.81); if (unlikely(!__pyx_float_9_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25319  __pyx_float_0_185 = PyFloat_FromDouble(0.185); if (unlikely(!__pyx_float_0_185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25320  __pyx_float_1_094 = PyFloat_FromDouble(1.094); if (unlikely(!__pyx_float_1_094)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25321  __pyx_float_1eneg_10 = PyFloat_FromDouble(1e-10); if (unlikely(!__pyx_float_1eneg_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25322  __pyx_float_0_0336 = PyFloat_FromDouble(0.0336); if (unlikely(!__pyx_float_0_0336)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25323  __pyx_float_0_0624 = PyFloat_FromDouble(0.0624); if (unlikely(!__pyx_float_0_0624)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25324  __pyx_float_0_01915 = PyFloat_FromDouble(0.01915); if (unlikely(!__pyx_float_0_01915)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25325  __pyx_float_neg_2_5 = PyFloat_FromDouble(-2.5); if (unlikely(!__pyx_float_neg_2_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25326  __pyx_float_neg_1_25 = PyFloat_FromDouble(-1.25); if (unlikely(!__pyx_float_neg_1_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25327  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25328  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25329  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25330  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25331  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25332  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25333  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25334  __pyx_int_100 = PyInt_FromLong(100); if (unlikely(!__pyx_int_100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25335  __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25336  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25337  __pyx_int_neg_4 = PyInt_FromLong(-4); if (unlikely(!__pyx_int_neg_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25338  return 0;
25339  __pyx_L1_error:;
25340  return -1;
25341 }
25342 
25343 #if PY_MAJOR_VERSION < 3
25344 PyMODINIT_FUNC initWaveTools(void); /*proto*/
25345 PyMODINIT_FUNC initWaveTools(void)
25346 #else
25347 PyMODINIT_FUNC PyInit_WaveTools(void); /*proto*/
25348 PyMODINIT_FUNC PyInit_WaveTools(void)
25349 #endif
25350 {
25351  PyObject *__pyx_t_1 = NULL;
25352  PyObject *__pyx_t_2 = NULL;
25353  PyObject *__pyx_t_3 = NULL;
25354  PyObject *__pyx_t_4 = NULL;
25355  PyObject *__pyx_t_5 = NULL;
25356  PyObject *__pyx_t_6 = NULL;
25357  PyObject *__pyx_t_7 = NULL;
25358  int __pyx_lineno = 0;
25359  const char *__pyx_filename = NULL;
25360  int __pyx_clineno = 0;
25361  __Pyx_RefNannyDeclarations
25362  #if CYTHON_REFNANNY
25363  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
25364  if (!__Pyx_RefNanny) {
25365  PyErr_Clear();
25366  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
25367  if (!__Pyx_RefNanny)
25368  Py_FatalError("failed to import 'refnanny' module");
25369  }
25370  #endif
25371  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_WaveTools(void)", 0);
25372  if (__Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25373  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25374  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25375  #ifdef __Pyx_CyFunction_USED
25376  if (__pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25377  #endif
25378  #ifdef __Pyx_FusedFunction_USED
25379  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25380  #endif
25381  #ifdef __Pyx_Coroutine_USED
25382  if (__pyx_Coroutine_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25383  #endif
25384  #ifdef __Pyx_Generator_USED
25385  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25386  #endif
25387  #ifdef __Pyx_StopAsyncIteration_USED
25388  if (__pyx_StopAsyncIteration_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25389  #endif
25390  /*--- Library function declarations ---*/
25391  /*--- Threads initialization code ---*/
25392  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
25393  #ifdef WITH_THREAD /* Python build with threading support? */
25394  PyEval_InitThreads();
25395  #endif
25396  #endif
25397  /*--- Module creation code ---*/
25398  #if PY_MAJOR_VERSION < 3
25399  __pyx_m = Py_InitModule4("WaveTools", __pyx_methods, __pyx_k_Tools_for_working_with_water_wav, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
25400  #else
25401  __pyx_m = PyModule_Create(&__pyx_moduledef);
25402  #endif
25403  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25404  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25405  Py_INCREF(__pyx_d);
25406  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25407  #if CYTHON_COMPILING_IN_PYPY
25408  Py_INCREF(__pyx_b);
25409  #endif
25410  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
25411  /*--- Initialize various global constants etc. ---*/
25412  if (__Pyx_InitGlobals() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25413  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
25414  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25415  #endif
25416  if (__pyx_module_is_main_WaveTools) {
25417  if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25418  }
25419  #if PY_MAJOR_VERSION >= 3
25420  {
25421  PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25422  if (!PyDict_GetItemString(modules, "WaveTools")) {
25423  if (unlikely(PyDict_SetItemString(modules, "WaveTools", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25424  }
25425  }
25426  #endif
25427  /*--- Builtin init code ---*/
25428  if (__Pyx_InitCachedBuiltins() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25429  /*--- Constants init code ---*/
25430  if (__Pyx_InitCachedConstants() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25431  /*--- Global init code ---*/
25432  /*--- Variable export code ---*/
25433  /*--- Function export code ---*/
25434  /*--- Type init code ---*/
25435  /*--- Type import code ---*/
25436  /*--- Variable import code ---*/
25437  /*--- Function import code ---*/
25438  /*--- Execution code ---*/
25439  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
25440  if (__Pyx_patch_abc() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25441  #endif
25442 
25443  /* "WaveTools.pyx":13
25444  * :parts: 2
25445  * """
25446  * from math import pi, tanh, sqrt, exp, log, sin, cos, cosh, sinh # <<<<<<<<<<<<<<
25447  * import numpy as np
25448  * import cmath as cmath
25449  */
25450  __pyx_t_1 = PyList_New(9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25451  __Pyx_GOTREF(__pyx_t_1);
25452  __Pyx_INCREF(__pyx_n_s_pi);
25453  __Pyx_GIVEREF(__pyx_n_s_pi);
25454  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_pi);
25455  __Pyx_INCREF(__pyx_n_s_tanh);
25456  __Pyx_GIVEREF(__pyx_n_s_tanh);
25457  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_tanh);
25458  __Pyx_INCREF(__pyx_n_s_sqrt);
25459  __Pyx_GIVEREF(__pyx_n_s_sqrt);
25460  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_sqrt);
25461  __Pyx_INCREF(__pyx_n_s_exp);
25462  __Pyx_GIVEREF(__pyx_n_s_exp);
25463  PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_exp);
25464  __Pyx_INCREF(__pyx_n_s_log);
25465  __Pyx_GIVEREF(__pyx_n_s_log);
25466  PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_s_log);
25467  __Pyx_INCREF(__pyx_n_s_sin);
25468  __Pyx_GIVEREF(__pyx_n_s_sin);
25469  PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_s_sin);
25470  __Pyx_INCREF(__pyx_n_s_cos);
25471  __Pyx_GIVEREF(__pyx_n_s_cos);
25472  PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_s_cos);
25473  __Pyx_INCREF(__pyx_n_s_cosh);
25474  __Pyx_GIVEREF(__pyx_n_s_cosh);
25475  PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_s_cosh);
25476  __Pyx_INCREF(__pyx_n_s_sinh);
25477  __Pyx_GIVEREF(__pyx_n_s_sinh);
25478  PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_s_sinh);
25479  __pyx_t_2 = __Pyx_Import(__pyx_n_s_math, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25480  __Pyx_GOTREF(__pyx_t_2);
25481  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25482  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_pi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25483  __Pyx_GOTREF(__pyx_t_1);
25484  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pi, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25485  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25486  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_tanh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25487  __Pyx_GOTREF(__pyx_t_1);
25488  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tanh, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25489  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25490  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25491  __Pyx_GOTREF(__pyx_t_1);
25492  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sqrt, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25493  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25494  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_exp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25495  __Pyx_GOTREF(__pyx_t_1);
25496  if (PyDict_SetItem(__pyx_d, __pyx_n_s_exp, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25497  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25498  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25499  __Pyx_GOTREF(__pyx_t_1);
25500  if (PyDict_SetItem(__pyx_d, __pyx_n_s_log, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25501  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25502  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sin); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25503  __Pyx_GOTREF(__pyx_t_1);
25504  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sin, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25505  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25506  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25507  __Pyx_GOTREF(__pyx_t_1);
25508  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cos, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25509  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25510  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_cosh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25511  __Pyx_GOTREF(__pyx_t_1);
25512  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cosh, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25513  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25514  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sinh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25515  __Pyx_GOTREF(__pyx_t_1);
25516  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sinh, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25517  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25518  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25519 
25520  /* "WaveTools.pyx":14
25521  * """
25522  * from math import pi, tanh, sqrt, exp, log, sin, cos, cosh, sinh
25523  * import numpy as np # <<<<<<<<<<<<<<
25524  * import cmath as cmath
25525  * from Profiling import logEvent
25526  */
25527  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25528  __Pyx_GOTREF(__pyx_t_2);
25529  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25530  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25531 
25532  /* "WaveTools.pyx":15
25533  * from math import pi, tanh, sqrt, exp, log, sin, cos, cosh, sinh
25534  * import numpy as np
25535  * import cmath as cmath # <<<<<<<<<<<<<<
25536  * from Profiling import logEvent
25537  * import time as tt
25538  */
25539  __pyx_t_2 = __Pyx_Import(__pyx_n_s_cmath, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25540  __Pyx_GOTREF(__pyx_t_2);
25541  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cmath, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25542  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25543 
25544  /* "WaveTools.pyx":16
25545  * import numpy as np
25546  * import cmath as cmath
25547  * from Profiling import logEvent # <<<<<<<<<<<<<<
25548  * import time as tt
25549  * import sys as sys
25550  */
25551  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25552  __Pyx_GOTREF(__pyx_t_2);
25553  __Pyx_INCREF(__pyx_n_s_logEvent);
25554  __Pyx_GIVEREF(__pyx_n_s_logEvent);
25555  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_logEvent);
25556  __pyx_t_1 = __Pyx_Import(__pyx_n_s_Profiling, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25557  __Pyx_GOTREF(__pyx_t_1);
25558  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25559  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25560  __Pyx_GOTREF(__pyx_t_2);
25561  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logEvent, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25562  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25563  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25564 
25565  /* "WaveTools.pyx":17
25566  * import cmath as cmath
25567  * from Profiling import logEvent
25568  * import time as tt # <<<<<<<<<<<<<<
25569  * import sys as sys
25570  *
25571  */
25572  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25573  __Pyx_GOTREF(__pyx_t_1);
25574  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tt, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25575  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25576 
25577  /* "WaveTools.pyx":18
25578  * from Profiling import logEvent
25579  * import time as tt
25580  * import sys as sys # <<<<<<<<<<<<<<
25581  *
25582  *
25583  */
25584  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25585  __Pyx_GOTREF(__pyx_t_1);
25586  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25587  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25588 
25589  /* "WaveTools.pyx":21
25590  *
25591  *
25592  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
25593  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
25594  * param: funcName : function name in form of string under consideration
25595  */
25596  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_1loadExistingFunction, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25597  __Pyx_GOTREF(__pyx_t_1);
25598  if (PyDict_SetItem(__pyx_d, __pyx_n_s_loadExistingFunction, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25599  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25600 
25601  /* "WaveTools.pyx":39
25602  *
25603  *
25604  * def setVertDir(g): # <<<<<<<<<<<<<<
25605  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
25606  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
25607  */
25608  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_3setVertDir, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25609  __Pyx_GOTREF(__pyx_t_1);
25610  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setVertDir, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25611  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25612 
25613  /* "WaveTools.pyx":45
25614  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
25615  *
25616  * def setDirVector(vector): # <<<<<<<<<<<<<<
25617  * """ Returns the direction of a vector in the form of a unit vector
25618  * param: vector : Any vector with three components
25619  */
25620  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_5setDirVector, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25621  __Pyx_GOTREF(__pyx_t_1);
25622  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setDirVector, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25623  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25624 
25625  /* "WaveTools.pyx":51
25626  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
25627  *
25628  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
25629  * """ Checks if to vectors are vertical and returns system exit if not
25630  * param: v1 : 1st vector [-] with three components
25631  */
25632  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_7dirCheck, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25633  __Pyx_GOTREF(__pyx_t_1);
25634  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dirCheck, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25635  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25636 
25637  /* "WaveTools.pyx":63
25638  * else:
25639  * return None
25640  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
25641  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
25642  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
25643  */
25644  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_9reduceToIntervals, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25645  __Pyx_GOTREF(__pyx_t_1);
25646  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduceToIntervals, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25647  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25648 
25649  /* "WaveTools.pyx":72
25650  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
25651  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
25652  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
25653  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
25654  * param: a : y(x) function [-]
25655  */
25656  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_11returnRectangles, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25657  __Pyx_GOTREF(__pyx_t_1);
25658  if (PyDict_SetItem(__pyx_d, __pyx_n_s_returnRectangles, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25659  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25660 
25661  /* "WaveTools.pyx":78
25662  * """
25663  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
25664  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
25665  * """ Returns \delta y of y(x,z) using the rectangle method
25666  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
25667  */
25668  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_13returnRectangles3D, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25669  __Pyx_GOTREF(__pyx_t_1);
25670  if (PyDict_SetItem(__pyx_d, __pyx_n_s_returnRectangles3D, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25671  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25672 
25673  /* "WaveTools.pyx":92
25674  * ai[:,jj] *= (x[1:]-x[:-1])
25675  * return ai
25676  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
25677  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
25678  * param: Sint : Sint(th) function [-]
25679  */
25680  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_15normIntegral, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25681  __Pyx_GOTREF(__pyx_t_1);
25682  if (PyDict_SetItem(__pyx_d, __pyx_n_s_normIntegral, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25683  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25684 
25685  /* "WaveTools.pyx":102
25686  *
25687  *
25688  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
25689  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
25690  * :param kDir: wave number vector [1/L] with three components
25691  */
25692  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_17eta_mode, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25693  __Pyx_GOTREF(__pyx_t_1);
25694  if (PyDict_SetItem(__pyx_d, __pyx_n_s_eta_mode, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25695  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25696 
25697  /* "WaveTools.pyx":113
25698  *
25699  *
25700  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
25701  * """Returns a single frequency mode for velocity at point x,y,z,t
25702  * :param kDir: wave number vector [1/L] with three components
25703  */
25704  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_19vel_mode, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25705  __Pyx_GOTREF(__pyx_t_1);
25706  if (PyDict_SetItem(__pyx_d, __pyx_n_s_vel_mode, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25707  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25708 
25709  /* "WaveTools.pyx":142
25710  *
25711  *
25712  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
25713  * """sigma function for JONSWAP spectrum
25714  * http://www.wikiwaves.org/Ocean-Wave_Sectra
25715  */
25716  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_21sigma, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25717  __Pyx_GOTREF(__pyx_t_1);
25718  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sigma, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25719  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25720 
25721  /* "WaveTools.pyx":150
25722  *
25723  *
25724  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
25725  * """The wave spectrum from Joint North Sea Wave Observation Project
25726  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
25727  */
25728  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_23JONSWAP, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25729  __Pyx_GOTREF(__pyx_t_1);
25730  if (PyDict_SetItem(__pyx_d, __pyx_n_s_JONSWAP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25731  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25732 
25733  /* "WaveTools.pyx":174
25734  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
25735  *
25736  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
25737  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
25738  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
25739  */
25740  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_25PM_mod, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25741  __Pyx_GOTREF(__pyx_t_1);
25742  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PM_mod, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25743  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25744 
25745  /* "WaveTools.pyx":186
25746  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
25747  *
25748  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
25749  * """The cos2s wave directional Spread
25750  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
25751  */
25752  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_27cos2s, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25753  __Pyx_GOTREF(__pyx_t_1);
25754  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cos2s, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25755  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25756 
25757  /* "WaveTools.pyx":197
25758  * fun[:,ii] = np.cos(theta/2)**(2*s)
25759  * return fun
25760  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
25761  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
25762  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
25763  */
25764  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_29mitsuyasu, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25765  __Pyx_GOTREF(__pyx_t_1);
25766  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mitsuyasu, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25767  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25768 
25769  /* "WaveTools.pyx":217
25770  *
25771  *
25772  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
25773  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
25774  *
25775  */
25776  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_31dispersion, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25777  __Pyx_GOTREF(__pyx_t_1);
25778  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dispersion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25779  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25780 
25781  /* "WaveTools.pyx":246
25782  *
25783  *
25784  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
25785  * """ returns a top hat filter
25786  * :param l: array length
25787  */
25788  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_33tophat, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25789  __Pyx_GOTREF(__pyx_t_1);
25790  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tophat, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25791  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25792 
25793  /* "WaveTools.pyx":257
25794  * return a
25795  *
25796  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
25797  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
25798  * :param l: array length
25799  */
25800  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_35costap, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25801  __Pyx_GOTREF(__pyx_t_1);
25802  if (PyDict_SetItem(__pyx_d, __pyx_n_s_costap, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25803  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25804 
25805  /* "WaveTools.pyx":270
25806  * return wind
25807  *
25808  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
25809  * """ This function does a spectral decomposition of a time series with constant sampling.
25810  * It returns a list with results with four entries:
25811  */
25812  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_37decompose_tseries, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25813  __Pyx_GOTREF(__pyx_t_1);
25814  if (PyDict_SetItem(__pyx_d, __pyx_n_s_decompose_tseries, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25815  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25816 
25817  /* "WaveTools.pyx":308
25818  *
25819  *
25820  * class MonochromaticWaves: # <<<<<<<<<<<<<<
25821  * """Generate a monochromatic wave train in the linear regime
25822  * :param period: Monochromatic wave period
25823  */
25824  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_MonochromaticWaves, __pyx_n_s_MonochromaticWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_monochromatic_wave_tr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25825  __Pyx_GOTREF(__pyx_t_1);
25826 
25827  /* "WaveTools.pyx":324
25828  * :phi0: Phase of the wave
25829  * """
25830  * def __init__(self, # <<<<<<<<<<<<<<
25831  * period,
25832  * waveHeight,
25833  */
25834  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_18MonochromaticWaves_1__init__, 0, __pyx_n_s_MonochromaticWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25835  __Pyx_GOTREF(__pyx_t_2);
25836  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_2, sizeof(__pyx_defaults), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25837 
25838  /* "WaveTools.pyx":334
25839  * waveType="Linear",
25840  * Ycoeff = None,
25841  * Bcoeff =None, meanVelocity = np.array([0.,0,0.]), # <<<<<<<<<<<<<<
25842  * phi0 = 0.):
25843  *
25844  */
25845  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25846  __Pyx_GOTREF(__pyx_t_4);
25847  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25848  __Pyx_GOTREF(__pyx_t_5);
25849  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25850  __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25851  __Pyx_GOTREF(__pyx_t_4);
25852  __Pyx_INCREF(__pyx_float_0_);
25853  __Pyx_GIVEREF(__pyx_float_0_);
25854  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_float_0_);
25855  __Pyx_INCREF(__pyx_int_0);
25856  __Pyx_GIVEREF(__pyx_int_0);
25857  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_int_0);
25858  __Pyx_INCREF(__pyx_float_0_);
25859  __Pyx_GIVEREF(__pyx_float_0_);
25860  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_float_0_);
25861  __pyx_t_6 = NULL;
25862  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
25863  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
25864  if (likely(__pyx_t_6)) {
25865  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
25866  __Pyx_INCREF(__pyx_t_6);
25867  __Pyx_INCREF(function);
25868  __Pyx_DECREF_SET(__pyx_t_5, function);
25869  }
25870  }
25871  if (!__pyx_t_6) {
25872  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25873  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25874  __Pyx_GOTREF(__pyx_t_3);
25875  } else {
25876  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25877  __Pyx_GOTREF(__pyx_t_7);
25878  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
25879  __Pyx_GIVEREF(__pyx_t_4);
25880  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
25881  __pyx_t_4 = 0;
25882  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25883  __Pyx_GOTREF(__pyx_t_3);
25884  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
25885  }
25886  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25887  __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_2)->__pyx_arg_meanVelocity = __pyx_t_3;
25888  __Pyx_GIVEREF(__pyx_t_3);
25889  __pyx_t_3 = 0;
25890  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_2, __pyx_pf_9WaveTools_18MonochromaticWaves_6__defaults__);
25891  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25892  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25893 
25894  /* "WaveTools.pyx":384
25895  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
25896  * sys.exit(1)
25897  * def eta(self, x, t): # <<<<<<<<<<<<<<
25898  * if self.waveType is "Linear":
25899  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
25900  */
25901  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_18MonochromaticWaves_3eta, 0, __pyx_n_s_MonochromaticWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__166)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25902  __Pyx_GOTREF(__pyx_t_2);
25903  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_eta, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25904  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25905 
25906  /* "WaveTools.pyx":395
25907  * return HH/self.k
25908  *
25909  * def u(self, x, t): # <<<<<<<<<<<<<<
25910  * if self.waveType is "Linear":
25911  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
25912  */
25913  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_18MonochromaticWaves_5u, 0, __pyx_n_s_MonochromaticWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25914  __Pyx_GOTREF(__pyx_t_2);
25915  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_u, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25916  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25917 
25918  /* "WaveTools.pyx":308
25919  *
25920  *
25921  * class MonochromaticWaves: # <<<<<<<<<<<<<<
25922  * """Generate a monochromatic wave train in the linear regime
25923  * :param period: Monochromatic wave period
25924  */
25925  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_MonochromaticWaves, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25926  __Pyx_GOTREF(__pyx_t_2);
25927  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MonochromaticWaves, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25928  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25929  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25930 
25931  /* "WaveTools.pyx":411
25932  *
25933  *
25934  * class RandomWaves: # <<<<<<<<<<<<<<
25935  * """Generate approximate random wave solutions
25936  * :param Tp: frequency [1/T]
25937  */
25938  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_RandomWaves, __pyx_n_s_RandomWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_approximate_random_wave); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25939  __Pyx_GOTREF(__pyx_t_1);
25940 
25941  /* "WaveTools.pyx":426
25942  * """
25943  *
25944  * def __init__(self, # <<<<<<<<<<<<<<
25945  * Tp,
25946  * Hs,
25947  */
25948  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_11RandomWaves_1__init__, 0, __pyx_n_s_RandomWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25949  __Pyx_GOTREF(__pyx_t_2);
25950  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
25951  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25952  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25953 
25954  /* "WaveTools.pyx":489
25955  * for ii in range(3):
25956  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
25957  * def eta(self, x, t): # <<<<<<<<<<<<<<
25958  * """Free surface displacement
25959  *
25960  */
25961  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_11RandomWaves_3eta, 0, __pyx_n_s_RandomWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25962  __Pyx_GOTREF(__pyx_t_2);
25963  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_eta, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25964  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25965 
25966  /* "WaveTools.pyx":500
25967  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25968  *
25969  * def u(self, x, t): # <<<<<<<<<<<<<<
25970  * """x-component of velocity
25971  *
25972  */
25973  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_11RandomWaves_5u, 0, __pyx_n_s_RandomWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25974  __Pyx_GOTREF(__pyx_t_2);
25975  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_u, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25976  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25977 
25978  /* "WaveTools.pyx":411
25979  *
25980  *
25981  * class RandomWaves: # <<<<<<<<<<<<<<
25982  * """Generate approximate random wave solutions
25983  * :param Tp: frequency [1/T]
25984  */
25985  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_RandomWaves, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25986  __Pyx_GOTREF(__pyx_t_2);
25987  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RandomWaves, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25988  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25989  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25990 
25991  /* "WaveTools.pyx":512
25992  * return U
25993  *
25994  * class MultiSpectraRandomWaves(RandomWaves): # <<<<<<<<<<<<<<
25995  * """Generate a random wave timeseries from multiple spectra.
25996  * Same input parameters as RandomWaves class but they have to be all in lists with the same lenght as the spectra (except from g!)
25997  */
25998  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25999  __Pyx_GOTREF(__pyx_t_1);
26000  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26001  __Pyx_GOTREF(__pyx_t_2);
26002  __Pyx_GIVEREF(__pyx_t_1);
26003  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
26004  __pyx_t_1 = 0;
26005  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26006  __Pyx_GOTREF(__pyx_t_1);
26007  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_MultiSpectraRandomWaves, __pyx_n_s_MultiSpectraRandomWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_random_wave_timeserie); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26008  __Pyx_GOTREF(__pyx_t_3);
26009 
26010  /* "WaveTools.pyx":517
26011  * :param Nspectra, number of spectra
26012  * """
26013  * def __init__(self, # <<<<<<<<<<<<<<
26014  * Nspectra,
26015  * Tp, # np array with
26016  */
26017  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_1__init__, 0, __pyx_n_s_MultiSpectraRandomWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26018  __Pyx_GOTREF(__pyx_t_5);
26019  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_init, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26020  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26021 
26022  /* "WaveTools.pyx":581
26023  *
26024  *
26025  * def eta(self, x, t): # <<<<<<<<<<<<<<
26026  * """Free surface displacement
26027  *
26028  */
26029  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_3eta, 0, __pyx_n_s_MultiSpectraRandomWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26030  __Pyx_GOTREF(__pyx_t_5);
26031  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_eta, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26032  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26033 
26034  /* "WaveTools.pyx":592
26035  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
26036  *
26037  * def u(self, x, t): # <<<<<<<<<<<<<<
26038  * """x-component of velocity
26039  *
26040  */
26041  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_5u, 0, __pyx_n_s_MultiSpectraRandomWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26042  __Pyx_GOTREF(__pyx_t_5);
26043  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_u, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26044  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26045 
26046  /* "WaveTools.pyx":512
26047  * return U
26048  *
26049  * class MultiSpectraRandomWaves(RandomWaves): # <<<<<<<<<<<<<<
26050  * """Generate a random wave timeseries from multiple spectra.
26051  * Same input parameters as RandomWaves class but they have to be all in lists with the same lenght as the spectra (except from g!)
26052  */
26053  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MultiSpectraRandomWaves, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26054  __Pyx_GOTREF(__pyx_t_5);
26055  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MultiSpectraRandomWaves, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26056  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26057  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26058  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26059  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26060 
26061  /* "WaveTools.pyx":606
26062  *
26063  *
26064  * class DirectionalWaves(RandomWaves): # <<<<<<<<<<<<<<
26065  * """Generate a random wave timeseries from directional waves
26066  * Same input parameters as RandomWaves with the addition of:
26067  */
26068  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26069  __Pyx_GOTREF(__pyx_t_2);
26070  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26071  __Pyx_GOTREF(__pyx_t_1);
26072  __Pyx_GIVEREF(__pyx_t_2);
26073  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
26074  __pyx_t_2 = 0;
26075  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26076  __Pyx_GOTREF(__pyx_t_2);
26077  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_DirectionalWaves, __pyx_n_s_DirectionalWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_random_wave_timeserie_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26078  __Pyx_GOTREF(__pyx_t_3);
26079 
26080  /* "WaveTools.pyx":616
26081  *
26082  * """
26083  * def __init__(self, # <<<<<<<<<<<<<<
26084  * M, #half bin of frequencies
26085  * Tp, # np array with
26086  */
26087  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_16DirectionalWaves_1__init__, 0, __pyx_n_s_DirectionalWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26088  __Pyx_GOTREF(__pyx_t_5);
26089  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_tuple__184);
26090  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_init, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26091  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26092 
26093  /* "WaveTools.pyx":713
26094  * # Creating amplitudes spectrum
26095  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
26096  * def eta(self, x, t): # <<<<<<<<<<<<<<
26097  * """Free surface displacement
26098  *
26099  */
26100  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_16DirectionalWaves_3eta, 0, __pyx_n_s_DirectionalWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26101  __Pyx_GOTREF(__pyx_t_5);
26102  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_eta, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26103  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26104 
26105  /* "WaveTools.pyx":726
26106  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
26107  *
26108  * def u(self, x, t): # <<<<<<<<<<<<<<
26109  * """x-component of velocity
26110  *
26111  */
26112  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_16DirectionalWaves_5u, 0, __pyx_n_s_DirectionalWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26113  __Pyx_GOTREF(__pyx_t_5);
26114  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_u, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26115  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26116 
26117  /* "WaveTools.pyx":606
26118  *
26119  *
26120  * class DirectionalWaves(RandomWaves): # <<<<<<<<<<<<<<
26121  * """Generate a random wave timeseries from directional waves
26122  * Same input parameters as RandomWaves with the addition of:
26123  */
26124  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_DirectionalWaves, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26125  __Pyx_GOTREF(__pyx_t_5);
26126  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DirectionalWaves, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26127  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26128  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26129  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26130  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26131 
26132  /* "WaveTools.pyx":747
26133  *
26134  *
26135  * class TimeSeries: # <<<<<<<<<<<<<<
26136  * """Generate a time series by using spectral windowing method.
26137  * :param timeSeriesFile: Time series file name
26138  */
26139  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_TimeSeries, __pyx_n_s_TimeSeries, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_time_series_by_using); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26140  __Pyx_GOTREF(__pyx_t_1);
26141 
26142  /* "WaveTools.pyx":763
26143  * """
26144  *
26145  * def __init__(self, # <<<<<<<<<<<<<<
26146  * timeSeriesFile, # e.g.= "Timeseries.txt",
26147  * skiprows,
26148  */
26149  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_1__init__, 0, __pyx_n_s_TimeSeries___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26150  __Pyx_GOTREF(__pyx_t_2);
26151  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__191);
26152  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26153  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26154 
26155  /* "WaveTools.pyx":1019
26156  * # self.Noverlap = int(self.Npw *0.25)
26157  *
26158  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
26159  * """Free surface displacement
26160  * :param x: floating point x coordinate
26161  */
26162  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_3etaDirect, 0, __pyx_n_s_TimeSeries_etaDirect, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26163  __Pyx_GOTREF(__pyx_t_2);
26164  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_etaDirect, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26165  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26166 
26167  /* "WaveTools.pyx":1029
26168  * return Eta
26169  *
26170  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
26171  * """x-component of velocity
26172  *
26173  */
26174  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_5uDirect, 0, __pyx_n_s_TimeSeries_uDirect, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__195)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26175  __Pyx_GOTREF(__pyx_t_2);
26176  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_uDirect, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26177  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26178 
26179  /* "WaveTools.pyx":1042
26180  * return U
26181  *
26182  * def findWindow(self,t): # <<<<<<<<<<<<<<
26183  * term = 1. - self.handover
26184  * if t-self.time[0] >= term*self.Twindow:
26185  */
26186  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_7findWindow, 0, __pyx_n_s_TimeSeries_findWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26187  __Pyx_GOTREF(__pyx_t_2);
26188  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_findWindow, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26189  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26190 
26191  /* "WaveTools.pyx":1052
26192  * return Nw
26193  *
26194  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
26195  * """Free surface displacement
26196  * :param x: floating point x coordinate
26197  */
26198  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_9etaWindow, 0, __pyx_n_s_TimeSeries_etaWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26199  __Pyx_GOTREF(__pyx_t_2);
26200  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_etaWindow, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26201  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26202 
26203  /* "WaveTools.pyx":1068
26204  * return Eta
26205  *
26206  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
26207  * """x-component of velocity
26208  *
26209  */
26210  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_11uWindow, 0, __pyx_n_s_TimeSeries_uWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26211  __Pyx_GOTREF(__pyx_t_2);
26212  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_uWindow, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26213  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26214 
26215  /* "WaveTools.pyx":747
26216  *
26217  *
26218  * class TimeSeries: # <<<<<<<<<<<<<<
26219  * """Generate a time series by using spectral windowing method.
26220  * :param timeSeriesFile: Time series file name
26221  */
26222  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_TimeSeries, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26223  __Pyx_GOTREF(__pyx_t_2);
26224  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TimeSeries, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26225  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26226  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26227 
26228  /* "WaveTools.pyx":1
26229  * # A type of -*- python -*- file # <<<<<<<<<<<<<<
26230  * #cython: embedsignature=True
26231  * """Tools for working with water waves.
26232  */
26233  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26234  __Pyx_GOTREF(__pyx_t_1);
26235  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26236  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26237 
26238  /*--- Wrapped vars code ---*/
26239 
26240  goto __pyx_L0;
26241  __pyx_L1_error:;
26242  __Pyx_XDECREF(__pyx_t_1);
26243  __Pyx_XDECREF(__pyx_t_2);
26244  __Pyx_XDECREF(__pyx_t_3);
26245  __Pyx_XDECREF(__pyx_t_4);
26246  __Pyx_XDECREF(__pyx_t_5);
26247  __Pyx_XDECREF(__pyx_t_6);
26248  __Pyx_XDECREF(__pyx_t_7);
26249  if (__pyx_m) {
26250  if (__pyx_d) {
26251  __Pyx_AddTraceback("init WaveTools", __pyx_clineno, __pyx_lineno, __pyx_filename);
26252  }
26253  Py_DECREF(__pyx_m); __pyx_m = 0;
26254  } else if (!PyErr_Occurred()) {
26255  PyErr_SetString(PyExc_ImportError, "init WaveTools");
26256  }
26257  __pyx_L0:;
26258  __Pyx_RefNannyFinishContext();
26259  #if PY_MAJOR_VERSION < 3
26260  return;
26261  #else
26262  return __pyx_m;
26263  #endif
26264 }
26265 
26266 /* --- Runtime support code --- */
26267 #if CYTHON_REFNANNY
26268 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
26269  PyObject *m = NULL, *p = NULL;
26270  void *r = NULL;
26271  m = PyImport_ImportModule((char *)modname);
26272  if (!m) goto end;
26273  p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
26274  if (!p) goto end;
26275  r = PyLong_AsVoidPtr(p);
26276 end:
26277  Py_XDECREF(p);
26278  Py_XDECREF(m);
26279  return (__Pyx_RefNannyAPIStruct *)r;
26280 }
26281 #endif
26282 
26283 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
26284  PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
26285  if (unlikely(!result)) {
26286  PyErr_Format(PyExc_NameError,
26287 #if PY_MAJOR_VERSION >= 3
26288  "name '%U' is not defined", name);
26289 #else
26290  "name '%.200s' is not defined", PyString_AS_STRING(name));
26291 #endif
26292  }
26293  return result;
26294 }
26295 
26296 static void __Pyx_RaiseArgtupleInvalid(
26297  const char* func_name,
26298  int exact,
26299  Py_ssize_t num_min,
26300  Py_ssize_t num_max,
26301  Py_ssize_t num_found)
26302 {
26303  Py_ssize_t num_expected;
26304  const char *more_or_less;
26305  if (num_found < num_min) {
26306  num_expected = num_min;
26307  more_or_less = "at least";
26308  } else {
26309  num_expected = num_max;
26310  more_or_less = "at most";
26311  }
26312  if (exact) {
26313  more_or_less = "exactly";
26314  }
26315  PyErr_Format(PyExc_TypeError,
26316  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
26317  func_name, more_or_less, num_expected,
26318  (num_expected == 1) ? "" : "s", num_found);
26319 }
26320 
26321 static void __Pyx_RaiseDoubleKeywordsError(
26322  const char* func_name,
26323  PyObject* kw_name)
26324 {
26325  PyErr_Format(PyExc_TypeError,
26326  #if PY_MAJOR_VERSION >= 3
26327  "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
26328  #else
26329  "%s() got multiple values for keyword argument '%s'", func_name,
26330  PyString_AsString(kw_name));
26331  #endif
26332 }
26333 
26334 static int __Pyx_ParseOptionalKeywords(
26335  PyObject *kwds,
26336  PyObject **argnames[],
26337  PyObject *kwds2,
26338  PyObject *values[],
26339  Py_ssize_t num_pos_args,
26340  const char* function_name)
26341 {
26342  PyObject *key = 0, *value = 0;
26343  Py_ssize_t pos = 0;
26344  PyObject*** name;
26345  PyObject*** first_kw_arg = argnames + num_pos_args;
26346  while (PyDict_Next(kwds, &pos, &key, &value)) {
26347  name = first_kw_arg;
26348  while (*name && (**name != key)) name++;
26349  if (*name) {
26350  values[name-argnames] = value;
26351  continue;
26352  }
26353  name = first_kw_arg;
26354  #if PY_MAJOR_VERSION < 3
26355  if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
26356  while (*name) {
26357  if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
26358  && _PyString_Eq(**name, key)) {
26359  values[name-argnames] = value;
26360  break;
26361  }
26362  name++;
26363  }
26364  if (*name) continue;
26365  else {
26366  PyObject*** argname = argnames;
26367  while (argname != first_kw_arg) {
26368  if ((**argname == key) || (
26369  (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
26370  && _PyString_Eq(**argname, key))) {
26371  goto arg_passed_twice;
26372  }
26373  argname++;
26374  }
26375  }
26376  } else
26377  #endif
26378  if (likely(PyUnicode_Check(key))) {
26379  while (*name) {
26380  int cmp = (**name == key) ? 0 :
26381  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
26382  (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
26383  #endif
26384  PyUnicode_Compare(**name, key);
26385  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
26386  if (cmp == 0) {
26387  values[name-argnames] = value;
26388  break;
26389  }
26390  name++;
26391  }
26392  if (*name) continue;
26393  else {
26394  PyObject*** argname = argnames;
26395  while (argname != first_kw_arg) {
26396  int cmp = (**argname == key) ? 0 :
26397  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
26398  (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
26399  #endif
26400  PyUnicode_Compare(**argname, key);
26401  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
26402  if (cmp == 0) goto arg_passed_twice;
26403  argname++;
26404  }
26405  }
26406  } else
26407  goto invalid_keyword_type;
26408  if (kwds2) {
26409  if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
26410  } else {
26411  goto invalid_keyword;
26412  }
26413  }
26414  return 0;
26415 arg_passed_twice:
26416  __Pyx_RaiseDoubleKeywordsError(function_name, key);
26417  goto bad;
26418 invalid_keyword_type:
26419  PyErr_Format(PyExc_TypeError,
26420  "%.200s() keywords must be strings", function_name);
26421  goto bad;
26422 invalid_keyword:
26423  PyErr_Format(PyExc_TypeError,
26424  #if PY_MAJOR_VERSION < 3
26425  "%.200s() got an unexpected keyword argument '%.200s'",
26426  function_name, PyString_AsString(key));
26427  #else
26428  "%s() got an unexpected keyword argument '%U'",
26429  function_name, key);
26430  #endif
26431 bad:
26432  return -1;
26433 }
26434 
26435 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
26436  PyObject *result;
26437 #if CYTHON_COMPILING_IN_CPYTHON
26438  result = PyDict_GetItem(__pyx_d, name);
26439  if (likely(result)) {
26440  Py_INCREF(result);
26441  } else {
26442 #else
26443  result = PyObject_GetItem(__pyx_d, name);
26444  if (!result) {
26445  PyErr_Clear();
26446 #endif
26447  result = __Pyx_GetBuiltinName(name);
26448  }
26449  return result;
26450 }
26451 
26452 #if CYTHON_COMPILING_IN_CPYTHON
26453 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
26454  PyObject *result;
26455  ternaryfunc call = func->ob_type->tp_call;
26456  if (unlikely(!call))
26457  return PyObject_Call(func, arg, kw);
26458  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
26459  return NULL;
26460  result = (*call)(func, arg, kw);
26461  Py_LeaveRecursiveCall();
26462  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
26463  PyErr_SetString(
26464  PyExc_SystemError,
26465  "NULL result without error in PyObject_Call");
26466  }
26467  return result;
26468 }
26469 #endif
26470 
26471 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
26472  PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
26473 }
26474 
26475 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
26476  PyObject *r;
26477  if (!j) return NULL;
26478  r = PyObject_GetItem(o, j);
26479  Py_DECREF(j);
26480  return r;
26481 }
26482 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
26483  CYTHON_NCP_UNUSED int wraparound,
26484  CYTHON_NCP_UNUSED int boundscheck) {
26485 #if CYTHON_COMPILING_IN_CPYTHON
26486  if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
26487  if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
26488  PyObject *r = PyList_GET_ITEM(o, i);
26489  Py_INCREF(r);
26490  return r;
26491  }
26492  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
26493 #else
26494  return PySequence_GetItem(o, i);
26495 #endif
26496 }
26497 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
26498  CYTHON_NCP_UNUSED int wraparound,
26499  CYTHON_NCP_UNUSED int boundscheck) {
26500 #if CYTHON_COMPILING_IN_CPYTHON
26501  if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
26502  if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
26503  PyObject *r = PyTuple_GET_ITEM(o, i);
26504  Py_INCREF(r);
26505  return r;
26506  }
26507  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
26508 #else
26509  return PySequence_GetItem(o, i);
26510 #endif
26511 }
26512 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
26513  CYTHON_NCP_UNUSED int wraparound,
26514  CYTHON_NCP_UNUSED int boundscheck) {
26515 #if CYTHON_COMPILING_IN_CPYTHON
26516  if (is_list || PyList_CheckExact(o)) {
26517  Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
26518  if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
26519  PyObject *r = PyList_GET_ITEM(o, n);
26520  Py_INCREF(r);
26521  return r;
26522  }
26523  }
26524  else if (PyTuple_CheckExact(o)) {
26525  Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
26526  if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
26527  PyObject *r = PyTuple_GET_ITEM(o, n);
26528  Py_INCREF(r);
26529  return r;
26530  }
26531  } else {
26532  PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
26533  if (likely(m && m->sq_item)) {
26534  if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
26535  Py_ssize_t l = m->sq_length(o);
26536  if (likely(l >= 0)) {
26537  i += l;
26538  } else {
26539  if (PyErr_ExceptionMatches(PyExc_OverflowError))
26540  PyErr_Clear();
26541  else
26542  return NULL;
26543  }
26544  }
26545  return m->sq_item(o, i);
26546  }
26547  }
26548 #else
26549  if (is_list || PySequence_Check(o)) {
26550  return PySequence_GetItem(o, i);
26551  }
26552 #endif
26553  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
26554 }
26555 
26556 #if CYTHON_COMPILING_IN_CPYTHON
26557 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
26558  PyObject *self, *result;
26559  PyCFunction cfunc;
26560  cfunc = PyCFunction_GET_FUNCTION(func);
26561  self = PyCFunction_GET_SELF(func);
26562  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
26563  return NULL;
26564  result = cfunc(self, arg);
26565  Py_LeaveRecursiveCall();
26566  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
26567  PyErr_SetString(
26568  PyExc_SystemError,
26569  "NULL result without error in PyObject_Call");
26570  }
26571  return result;
26572 }
26573 #endif
26574 
26575 #if CYTHON_COMPILING_IN_CPYTHON
26576 static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
26577  PyObject *result;
26578  PyObject *args = PyTuple_New(1);
26579  if (unlikely(!args)) return NULL;
26580  Py_INCREF(arg);
26581  PyTuple_SET_ITEM(args, 0, arg);
26582  result = __Pyx_PyObject_Call(func, args, NULL);
26583  Py_DECREF(args);
26584  return result;
26585 }
26586 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
26587 #ifdef __Pyx_CyFunction_USED
26588  if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
26589 #else
26590  if (likely(PyCFunction_Check(func))) {
26591 #endif
26592  if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
26593  return __Pyx_PyObject_CallMethO(func, arg);
26594  }
26595  }
26596  return __Pyx__PyObject_CallOneArg(func, arg);
26597 }
26598 #else
26599 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
26600  PyObject *result;
26601  PyObject *args = PyTuple_Pack(1, arg);
26602  if (unlikely(!args)) return NULL;
26603  result = __Pyx_PyObject_Call(func, args, NULL);
26604  Py_DECREF(args);
26605  return result;
26606 }
26607 #endif
26608 
26609 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
26610  Py_ssize_t cstart, Py_ssize_t cstop,
26611  PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
26612  int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
26613 #if CYTHON_COMPILING_IN_CPYTHON
26614  PyMappingMethods* mp;
26615 #if PY_MAJOR_VERSION < 3
26616  PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
26617  if (likely(ms && ms->sq_slice)) {
26618  if (!has_cstart) {
26619  if (_py_start && (*_py_start != Py_None)) {
26620  cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
26621  if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
26622  } else
26623  cstart = 0;
26624  }
26625  if (!has_cstop) {
26626  if (_py_stop && (*_py_stop != Py_None)) {
26627  cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
26628  if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
26629  } else
26630  cstop = PY_SSIZE_T_MAX;
26631  }
26632  if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
26633  Py_ssize_t l = ms->sq_length(obj);
26634  if (likely(l >= 0)) {
26635  if (cstop < 0) {
26636  cstop += l;
26637  if (cstop < 0) cstop = 0;
26638  }
26639  if (cstart < 0) {
26640  cstart += l;
26641  if (cstart < 0) cstart = 0;
26642  }
26643  } else {
26644  if (PyErr_ExceptionMatches(PyExc_OverflowError))
26645  PyErr_Clear();
26646  else
26647  goto bad;
26648  }
26649  }
26650  return ms->sq_slice(obj, cstart, cstop);
26651  }
26652 #endif
26653  mp = Py_TYPE(obj)->tp_as_mapping;
26654  if (likely(mp && mp->mp_subscript))
26655 #endif
26656  {
26657  PyObject* result;
26658  PyObject *py_slice, *py_start, *py_stop;
26659  if (_py_slice) {
26660  py_slice = *_py_slice;
26661  } else {
26662  PyObject* owned_start = NULL;
26663  PyObject* owned_stop = NULL;
26664  if (_py_start) {
26665  py_start = *_py_start;
26666  } else {
26667  if (has_cstart) {
26668  owned_start = py_start = PyInt_FromSsize_t(cstart);
26669  if (unlikely(!py_start)) goto bad;
26670  } else
26671  py_start = Py_None;
26672  }
26673  if (_py_stop) {
26674  py_stop = *_py_stop;
26675  } else {
26676  if (has_cstop) {
26677  owned_stop = py_stop = PyInt_FromSsize_t(cstop);
26678  if (unlikely(!py_stop)) {
26679  Py_XDECREF(owned_start);
26680  goto bad;
26681  }
26682  } else
26683  py_stop = Py_None;
26684  }
26685  py_slice = PySlice_New(py_start, py_stop, Py_None);
26686  Py_XDECREF(owned_start);
26687  Py_XDECREF(owned_stop);
26688  if (unlikely(!py_slice)) goto bad;
26689  }
26690 #if CYTHON_COMPILING_IN_CPYTHON
26691  result = mp->mp_subscript(obj, py_slice);
26692 #else
26693  result = PyObject_GetItem(obj, py_slice);
26694 #endif
26695  if (!_py_slice) {
26696  Py_DECREF(py_slice);
26697  }
26698  return result;
26699  }
26700  PyErr_Format(PyExc_TypeError,
26701  "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
26702 bad:
26703  return NULL;
26704 }
26705 
26706 #if CYTHON_COMPILING_IN_CPYTHON
26707 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
26708 #ifdef __Pyx_CyFunction_USED
26709  if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
26710 #else
26711  if (likely(PyCFunction_Check(func))) {
26712 #endif
26713  if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
26714  return __Pyx_PyObject_CallMethO(func, NULL);
26715  }
26716  }
26717  return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
26718 }
26719 #endif
26720 
26721 #if CYTHON_USE_PYLONG_INTERNALS
26722  #include "longintrepr.h"
26723 #endif
26724 
26725 #if CYTHON_COMPILING_IN_CPYTHON
26726 static PyObject* __Pyx_PyFloat_DivideCObj(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26727  const double a = floatval;
26728  double b, result;
26729  if (likely(PyFloat_CheckExact(op2))) {
26730  b = PyFloat_AS_DOUBLE(op2);
26731  } else
26732  #if PY_MAJOR_VERSION < 3
26733  if (likely(PyInt_CheckExact(op2))) {
26734  b = (double) PyInt_AS_LONG(op2);
26735  } else
26736  #endif
26737  if (likely(PyLong_CheckExact(op2))) {
26738  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26739  const digit* digits = ((PyLongObject*)op2)->ob_digit;
26740  const Py_ssize_t size = Py_SIZE(op2);
26741  switch (size) {
26742  case 0: b = 0.0; break;
26743  case -1: b = -(double) digits[0]; break;
26744  case 1: b = (double) digits[0]; break;
26745  case -2:
26746  case 2:
26747  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26748  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26749  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26750  if (size == -2)
26751  b = -b;
26752  break;
26753  }
26754  }
26755  case -3:
26756  case 3:
26757  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26758  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26759  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26760  if (size == -3)
26761  b = -b;
26762  break;
26763  }
26764  }
26765  case -4:
26766  case 4:
26767  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26768  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26769  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26770  if (size == -4)
26771  b = -b;
26772  break;
26773  }
26774  }
26775  default:
26776  #else
26777  {
26778  #endif
26779  b = PyLong_AsDouble(op2);
26780  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
26781  }
26782  } else {
26783  return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2));
26784  }
26785  PyFPE_START_PROTECT("divide", return NULL)
26786  result = a / b;
26787  PyFPE_END_PROTECT(result)
26788  return PyFloat_FromDouble(result);
26789 }
26790 #endif
26791 
26792 #if CYTHON_COMPILING_IN_CPYTHON
26793 static PyObject* __Pyx_PyFloat_SubtractCObj(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26794  const double a = floatval;
26795  double b, result;
26796  if (likely(PyFloat_CheckExact(op2))) {
26797  b = PyFloat_AS_DOUBLE(op2);
26798  } else
26799  #if PY_MAJOR_VERSION < 3
26800  if (likely(PyInt_CheckExact(op2))) {
26801  b = (double) PyInt_AS_LONG(op2);
26802  } else
26803  #endif
26804  if (likely(PyLong_CheckExact(op2))) {
26805  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26806  const digit* digits = ((PyLongObject*)op2)->ob_digit;
26807  const Py_ssize_t size = Py_SIZE(op2);
26808  switch (size) {
26809  case 0: b = 0.0; break;
26810  case -1: b = -(double) digits[0]; break;
26811  case 1: b = (double) digits[0]; break;
26812  case -2:
26813  case 2:
26814  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26815  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26816  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26817  if (size == -2)
26818  b = -b;
26819  break;
26820  }
26821  }
26822  case -3:
26823  case 3:
26824  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26825  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26826  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26827  if (size == -3)
26828  b = -b;
26829  break;
26830  }
26831  }
26832  case -4:
26833  case 4:
26834  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26835  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26836  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26837  if (size == -4)
26838  b = -b;
26839  break;
26840  }
26841  }
26842  default:
26843  #else
26844  {
26845  #endif
26846  b = PyLong_AsDouble(op2);
26847  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
26848  }
26849  } else {
26850  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
26851  }
26852  PyFPE_START_PROTECT("subtract", return NULL)
26853  result = a - b;
26854  PyFPE_END_PROTECT(result)
26855  return PyFloat_FromDouble(result);
26856 }
26857 #endif
26858 
26859 #if CYTHON_COMPILING_IN_CPYTHON
26860 static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26861  const double a = floatval;
26862  double b, result;
26863  if (likely(PyFloat_CheckExact(op2))) {
26864  b = PyFloat_AS_DOUBLE(op2);
26865  } else
26866  #if PY_MAJOR_VERSION < 3
26867  if (likely(PyInt_CheckExact(op2))) {
26868  b = (double) PyInt_AS_LONG(op2);
26869  } else
26870  #endif
26871  if (likely(PyLong_CheckExact(op2))) {
26872  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26873  const digit* digits = ((PyLongObject*)op2)->ob_digit;
26874  const Py_ssize_t size = Py_SIZE(op2);
26875  switch (size) {
26876  case 0: b = 0.0; break;
26877  case -1: b = -(double) digits[0]; break;
26878  case 1: b = (double) digits[0]; break;
26879  case -2:
26880  case 2:
26881  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26882  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26883  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26884  if (size == -2)
26885  b = -b;
26886  break;
26887  }
26888  }
26889  case -3:
26890  case 3:
26891  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26892  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26893  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26894  if (size == -3)
26895  b = -b;
26896  break;
26897  }
26898  }
26899  case -4:
26900  case 4:
26901  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26902  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26903  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26904  if (size == -4)
26905  b = -b;
26906  break;
26907  }
26908  }
26909  default:
26910  #else
26911  {
26912  #endif
26913  b = PyLong_AsDouble(op2);
26914  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
26915  }
26916  } else {
26917  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
26918  }
26919  PyFPE_START_PROTECT("add", return NULL)
26920  result = a + b;
26921  PyFPE_END_PROTECT(result)
26922  return PyFloat_FromDouble(result);
26923 }
26924 #endif
26925 
26926 #if CYTHON_COMPILING_IN_CPYTHON
26927 static PyObject* __Pyx_PyFloat_SubtractObjC(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26928  const double b = floatval;
26929  double a, result;
26930  if (likely(PyFloat_CheckExact(op1))) {
26931  a = PyFloat_AS_DOUBLE(op1);
26932  } else
26933  #if PY_MAJOR_VERSION < 3
26934  if (likely(PyInt_CheckExact(op1))) {
26935  a = (double) PyInt_AS_LONG(op1);
26936  } else
26937  #endif
26938  if (likely(PyLong_CheckExact(op1))) {
26939  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26940  const digit* digits = ((PyLongObject*)op1)->ob_digit;
26941  const Py_ssize_t size = Py_SIZE(op1);
26942  switch (size) {
26943  case 0: a = 0.0; break;
26944  case -1: a = -(double) digits[0]; break;
26945  case 1: a = (double) digits[0]; break;
26946  case -2:
26947  case 2:
26948  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26949  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26950  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
26951  if (size == -2)
26952  a = -a;
26953  break;
26954  }
26955  }
26956  case -3:
26957  case 3:
26958  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26959  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26960  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
26961  if (size == -3)
26962  a = -a;
26963  break;
26964  }
26965  }
26966  case -4:
26967  case 4:
26968  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26969  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26970  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
26971  if (size == -4)
26972  a = -a;
26973  break;
26974  }
26975  }
26976  default:
26977  #else
26978  {
26979  #endif
26980  a = PyLong_AsDouble(op1);
26981  if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
26982  }
26983  } else {
26984  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
26985  }
26986  PyFPE_START_PROTECT("subtract", return NULL)
26987  result = a - b;
26988  PyFPE_END_PROTECT(result)
26989  return PyFloat_FromDouble(result);
26990 }
26991 #endif
26992 
26993 static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
26994  Py_ssize_t cstart, Py_ssize_t cstop,
26995  PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
26996  int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
26997 #if CYTHON_COMPILING_IN_CPYTHON
26998  PyMappingMethods* mp;
26999 #if PY_MAJOR_VERSION < 3
27000  PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
27001  if (likely(ms && ms->sq_ass_slice)) {
27002  if (!has_cstart) {
27003  if (_py_start && (*_py_start != Py_None)) {
27004  cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
27005  if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
27006  } else
27007  cstart = 0;
27008  }
27009  if (!has_cstop) {
27010  if (_py_stop && (*_py_stop != Py_None)) {
27011  cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
27012  if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
27013  } else
27014  cstop = PY_SSIZE_T_MAX;
27015  }
27016  if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
27017  Py_ssize_t l = ms->sq_length(obj);
27018  if (likely(l >= 0)) {
27019  if (cstop < 0) {
27020  cstop += l;
27021  if (cstop < 0) cstop = 0;
27022  }
27023  if (cstart < 0) {
27024  cstart += l;
27025  if (cstart < 0) cstart = 0;
27026  }
27027  } else {
27028  if (PyErr_ExceptionMatches(PyExc_OverflowError))
27029  PyErr_Clear();
27030  else
27031  goto bad;
27032  }
27033  }
27034  return ms->sq_ass_slice(obj, cstart, cstop, value);
27035  }
27036 #endif
27037  mp = Py_TYPE(obj)->tp_as_mapping;
27038  if (likely(mp && mp->mp_ass_subscript))
27039 #endif
27040  {
27041  int result;
27042  PyObject *py_slice, *py_start, *py_stop;
27043  if (_py_slice) {
27044  py_slice = *_py_slice;
27045  } else {
27046  PyObject* owned_start = NULL;
27047  PyObject* owned_stop = NULL;
27048  if (_py_start) {
27049  py_start = *_py_start;
27050  } else {
27051  if (has_cstart) {
27052  owned_start = py_start = PyInt_FromSsize_t(cstart);
27053  if (unlikely(!py_start)) goto bad;
27054  } else
27055  py_start = Py_None;
27056  }
27057  if (_py_stop) {
27058  py_stop = *_py_stop;
27059  } else {
27060  if (has_cstop) {
27061  owned_stop = py_stop = PyInt_FromSsize_t(cstop);
27062  if (unlikely(!py_stop)) {
27063  Py_XDECREF(owned_start);
27064  goto bad;
27065  }
27066  } else
27067  py_stop = Py_None;
27068  }
27069  py_slice = PySlice_New(py_start, py_stop, Py_None);
27070  Py_XDECREF(owned_start);
27071  Py_XDECREF(owned_stop);
27072  if (unlikely(!py_slice)) goto bad;
27073  }
27074 #if CYTHON_COMPILING_IN_CPYTHON
27075  result = mp->mp_ass_subscript(obj, py_slice, value);
27076 #else
27077  result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
27078 #endif
27079  if (!_py_slice) {
27080  Py_DECREF(py_slice);
27081  }
27082  return result;
27083  }
27084  PyErr_Format(PyExc_TypeError,
27085  "'%.200s' object does not support slice %.10s",
27086  Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
27087 bad:
27088  return -1;
27089 }
27090 
27091 static double __Pyx__PyObject_AsDouble(PyObject* obj) {
27092  PyObject* float_value;
27093 #if CYTHON_COMPILING_IN_PYPY
27094  float_value = PyNumber_Float(obj); if (0) goto bad;
27095 #else
27096  PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
27097  if (likely(nb) && likely(nb->nb_float)) {
27098  float_value = nb->nb_float(obj);
27099  if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
27100  PyErr_Format(PyExc_TypeError,
27101  "__float__ returned non-float (type %.200s)",
27102  Py_TYPE(float_value)->tp_name);
27103  Py_DECREF(float_value);
27104  goto bad;
27105  }
27106  } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) {
27107 #if PY_MAJOR_VERSION >= 3
27108  float_value = PyFloat_FromString(obj);
27109 #else
27110  float_value = PyFloat_FromString(obj, 0);
27111 #endif
27112  } else {
27113  PyObject* args = PyTuple_New(1);
27114  if (unlikely(!args)) goto bad;
27115  PyTuple_SET_ITEM(args, 0, obj);
27116  float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0);
27117  PyTuple_SET_ITEM(args, 0, 0);
27118  Py_DECREF(args);
27119  }
27120 #endif
27121  if (likely(float_value)) {
27122  double value = PyFloat_AS_DOUBLE(float_value);
27123  Py_DECREF(float_value);
27124  return value;
27125  }
27126 bad:
27127  return (double)-1;
27128 }
27129 
27130 #if CYTHON_COMPILING_IN_CPYTHON
27131 static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
27132  #if PY_MAJOR_VERSION < 3
27133  if (likely(PyInt_CheckExact(op1))) {
27134  const long b = intval;
27135  long x;
27136  long a = PyInt_AS_LONG(op1);
27137  x = (long)((unsigned long)a - b);
27138  if (likely((x^a) >= 0 || (x^~b) >= 0))
27139  return PyInt_FromLong(x);
27140  return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
27141  }
27142  #endif
27143  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27144  if (likely(PyLong_CheckExact(op1))) {
27145  const long b = intval;
27146  long a, x;
27147  const PY_LONG_LONG llb = intval;
27148  PY_LONG_LONG lla, llx;
27149  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27150  const Py_ssize_t size = Py_SIZE(op1);
27151  if (likely(__Pyx_sst_abs(size) <= 1)) {
27152  a = likely(size) ? digits[0] : 0;
27153  if (size == -1) a = -a;
27154  } else {
27155  switch (size) {
27156  case -2:
27157  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27158  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27159  break;
27160  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27161  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27162  goto long_long;
27163  }
27164  case 2:
27165  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27166  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27167  break;
27168  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27169  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27170  goto long_long;
27171  }
27172  case -3:
27173  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27174  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27175  break;
27176  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27177  lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27178  goto long_long;
27179  }
27180  case 3:
27181  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27182  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27183  break;
27184  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27185  lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27186  goto long_long;
27187  }
27188  case -4:
27189  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27190  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27191  break;
27192  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27193  lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27194  goto long_long;
27195  }
27196  case 4:
27197  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27198  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27199  break;
27200  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27201  lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27202  goto long_long;
27203  }
27204  default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
27205  }
27206  }
27207  x = a - b;
27208  return PyLong_FromLong(x);
27209  long_long:
27210  llx = lla - llb;
27211  return PyLong_FromLongLong(llx);
27212  }
27213  #endif
27214  if (PyFloat_CheckExact(op1)) {
27215  const long b = intval;
27216  double a = PyFloat_AS_DOUBLE(op1);
27217  double result;
27218  PyFPE_START_PROTECT("subtract", return NULL)
27219  result = ((double)a) - (double)b;
27220  PyFPE_END_PROTECT(result)
27221  return PyFloat_FromDouble(result);
27222  }
27223  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
27224 }
27225 #endif
27226 
27227 static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
27228  int r;
27229  if (!j) return -1;
27230  r = PyObject_SetItem(o, j, v);
27231  Py_DECREF(j);
27232  return r;
27233 }
27234 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
27235  CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
27236 #if CYTHON_COMPILING_IN_CPYTHON
27237  if (is_list || PyList_CheckExact(o)) {
27238  Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
27239  if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
27240  PyObject* old = PyList_GET_ITEM(o, n);
27241  Py_INCREF(v);
27242  PyList_SET_ITEM(o, n, v);
27243  Py_DECREF(old);
27244  return 1;
27245  }
27246  } else {
27247  PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
27248  if (likely(m && m->sq_ass_item)) {
27249  if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
27250  Py_ssize_t l = m->sq_length(o);
27251  if (likely(l >= 0)) {
27252  i += l;
27253  } else {
27254  if (PyErr_ExceptionMatches(PyExc_OverflowError))
27255  PyErr_Clear();
27256  else
27257  return -1;
27258  }
27259  }
27260  return m->sq_ass_item(o, i, v);
27261  }
27262  }
27263 #else
27264 #if CYTHON_COMPILING_IN_PYPY
27265  if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
27266 #else
27267  if (is_list || PySequence_Check(o)) {
27268 #endif
27269  return PySequence_SetItem(o, i, v);
27270  }
27271 #endif
27272  return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
27273 }
27274 
27275 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
27276 #if CYTHON_COMPILING_IN_CPYTHON
27277  PyThreadState *tstate = PyThreadState_GET();
27278  *type = tstate->exc_type;
27279  *value = tstate->exc_value;
27280  *tb = tstate->exc_traceback;
27281  Py_XINCREF(*type);
27282  Py_XINCREF(*value);
27283  Py_XINCREF(*tb);
27284 #else
27285  PyErr_GetExcInfo(type, value, tb);
27286 #endif
27287 }
27288 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
27289 #if CYTHON_COMPILING_IN_CPYTHON
27290  PyObject *tmp_type, *tmp_value, *tmp_tb;
27291  PyThreadState *tstate = PyThreadState_GET();
27292  tmp_type = tstate->exc_type;
27293  tmp_value = tstate->exc_value;
27294  tmp_tb = tstate->exc_traceback;
27295  tstate->exc_type = type;
27296  tstate->exc_value = value;
27297  tstate->exc_traceback = tb;
27298  Py_XDECREF(tmp_type);
27299  Py_XDECREF(tmp_value);
27300  Py_XDECREF(tmp_tb);
27301 #else
27302  PyErr_SetExcInfo(type, value, tb);
27303 #endif
27304 }
27305 
27306 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
27307  PyObject *local_type, *local_value, *local_tb;
27308 #if CYTHON_COMPILING_IN_CPYTHON
27309  PyObject *tmp_type, *tmp_value, *tmp_tb;
27310  PyThreadState *tstate = PyThreadState_GET();
27311  local_type = tstate->curexc_type;
27312  local_value = tstate->curexc_value;
27313  local_tb = tstate->curexc_traceback;
27314  tstate->curexc_type = 0;
27315  tstate->curexc_value = 0;
27316  tstate->curexc_traceback = 0;
27317 #else
27318  PyErr_Fetch(&local_type, &local_value, &local_tb);
27319 #endif
27320  PyErr_NormalizeException(&local_type, &local_value, &local_tb);
27321 #if CYTHON_COMPILING_IN_CPYTHON
27322  if (unlikely(tstate->curexc_type))
27323 #else
27324  if (unlikely(PyErr_Occurred()))
27325 #endif
27326  goto bad;
27327  #if PY_MAJOR_VERSION >= 3
27328  if (local_tb) {
27329  if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
27330  goto bad;
27331  }
27332  #endif
27333  Py_XINCREF(local_tb);
27334  Py_XINCREF(local_type);
27335  Py_XINCREF(local_value);
27336  *type = local_type;
27337  *value = local_value;
27338  *tb = local_tb;
27339 #if CYTHON_COMPILING_IN_CPYTHON
27340  tmp_type = tstate->exc_type;
27341  tmp_value = tstate->exc_value;
27342  tmp_tb = tstate->exc_traceback;
27343  tstate->exc_type = local_type;
27344  tstate->exc_value = local_value;
27345  tstate->exc_traceback = local_tb;
27346  Py_XDECREF(tmp_type);
27347  Py_XDECREF(tmp_value);
27348  Py_XDECREF(tmp_tb);
27349 #else
27350  PyErr_SetExcInfo(local_type, local_value, local_tb);
27351 #endif
27352  return 0;
27353 bad:
27354  *type = 0;
27355  *value = 0;
27356  *tb = 0;
27357  Py_XDECREF(local_type);
27358  Py_XDECREF(local_value);
27359  Py_XDECREF(local_tb);
27360  return -1;
27361 }
27362 
27363 #if CYTHON_COMPILING_IN_CPYTHON
27364 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
27365  #if PY_MAJOR_VERSION < 3
27366  if (likely(PyInt_CheckExact(op1))) {
27367  const long b = intval;
27368  long x;
27369  long a = PyInt_AS_LONG(op1);
27370  x = (long)((unsigned long)a + b);
27371  if (likely((x^a) >= 0 || (x^b) >= 0))
27372  return PyInt_FromLong(x);
27373  return PyLong_Type.tp_as_number->nb_add(op1, op2);
27374  }
27375  #endif
27376  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27377  if (likely(PyLong_CheckExact(op1))) {
27378  const long b = intval;
27379  long a, x;
27380  const PY_LONG_LONG llb = intval;
27381  PY_LONG_LONG lla, llx;
27382  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27383  const Py_ssize_t size = Py_SIZE(op1);
27384  if (likely(__Pyx_sst_abs(size) <= 1)) {
27385  a = likely(size) ? digits[0] : 0;
27386  if (size == -1) a = -a;
27387  } else {
27388  switch (size) {
27389  case -2:
27390  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27391  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27392  break;
27393  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27394  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27395  goto long_long;
27396  }
27397  case 2:
27398  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27399  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27400  break;
27401  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27402  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27403  goto long_long;
27404  }
27405  case -3:
27406  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27407  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27408  break;
27409  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27410  lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27411  goto long_long;
27412  }
27413  case 3:
27414  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27415  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27416  break;
27417  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27418  lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27419  goto long_long;
27420  }
27421  case -4:
27422  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27423  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27424  break;
27425  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27426  lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27427  goto long_long;
27428  }
27429  case 4:
27430  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27431  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27432  break;
27433  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27434  lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27435  goto long_long;
27436  }
27437  default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
27438  }
27439  }
27440  x = a + b;
27441  return PyLong_FromLong(x);
27442  long_long:
27443  llx = lla + llb;
27444  return PyLong_FromLongLong(llx);
27445  }
27446  #endif
27447  if (PyFloat_CheckExact(op1)) {
27448  const long b = intval;
27449  double a = PyFloat_AS_DOUBLE(op1);
27450  double result;
27451  PyFPE_START_PROTECT("add", return NULL)
27452  result = ((double)a) + (double)b;
27453  PyFPE_END_PROTECT(result)
27454  return PyFloat_FromDouble(result);
27455  }
27456  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
27457 }
27458 #endif
27459 
27460 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
27461  PyObject *empty_list = 0;
27462  PyObject *module = 0;
27463  PyObject *global_dict = 0;
27464  PyObject *empty_dict = 0;
27465  PyObject *list;
27466  #if PY_VERSION_HEX < 0x03030000
27467  PyObject *py_import;
27468  py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
27469  if (!py_import)
27470  goto bad;
27471  #endif
27472  if (from_list)
27473  list = from_list;
27474  else {
27475  empty_list = PyList_New(0);
27476  if (!empty_list)
27477  goto bad;
27478  list = empty_list;
27479  }
27480  global_dict = PyModule_GetDict(__pyx_m);
27481  if (!global_dict)
27482  goto bad;
27483  empty_dict = PyDict_New();
27484  if (!empty_dict)
27485  goto bad;
27486  {
27487  #if PY_MAJOR_VERSION >= 3
27488  if (level == -1) {
27489  if (strchr(__Pyx_MODULE_NAME, '.')) {
27490  #if PY_VERSION_HEX < 0x03030000
27491  PyObject *py_level = PyInt_FromLong(1);
27492  if (!py_level)
27493  goto bad;
27494  module = PyObject_CallFunctionObjArgs(py_import,
27495  name, global_dict, empty_dict, list, py_level, NULL);
27496  Py_DECREF(py_level);
27497  #else
27498  module = PyImport_ImportModuleLevelObject(
27499  name, global_dict, empty_dict, list, 1);
27500  #endif
27501  if (!module) {
27502  if (!PyErr_ExceptionMatches(PyExc_ImportError))
27503  goto bad;
27504  PyErr_Clear();
27505  }
27506  }
27507  level = 0;
27508  }
27509  #endif
27510  if (!module) {
27511  #if PY_VERSION_HEX < 0x03030000
27512  PyObject *py_level = PyInt_FromLong(level);
27513  if (!py_level)
27514  goto bad;
27515  module = PyObject_CallFunctionObjArgs(py_import,
27516  name, global_dict, empty_dict, list, py_level, NULL);
27517  Py_DECREF(py_level);
27518  #else
27519  module = PyImport_ImportModuleLevelObject(
27520  name, global_dict, empty_dict, list, level);
27521  #endif
27522  }
27523  }
27524 bad:
27525  #if PY_VERSION_HEX < 0x03030000
27526  Py_XDECREF(py_import);
27527  #endif
27528  Py_XDECREF(empty_list);
27529  Py_XDECREF(empty_dict);
27530  return module;
27531 }
27532 
27533 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
27534  PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
27535  if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
27536  PyErr_Format(PyExc_ImportError,
27537  #if PY_MAJOR_VERSION < 3
27538  "cannot import name %.230s", PyString_AS_STRING(name));
27539  #else
27540  "cannot import name %S", name);
27541  #endif
27542  }
27543  return value;
27544 }
27545 
27546 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
27547 #if CYTHON_COMPILING_IN_PYPY
27548  return PyObject_RichCompareBool(s1, s2, equals);
27549 #else
27550  if (s1 == s2) {
27551  return (equals == Py_EQ);
27552  } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
27553  const char *ps1, *ps2;
27554  Py_ssize_t length = PyBytes_GET_SIZE(s1);
27555  if (length != PyBytes_GET_SIZE(s2))
27556  return (equals == Py_NE);
27557  ps1 = PyBytes_AS_STRING(s1);
27558  ps2 = PyBytes_AS_STRING(s2);
27559  if (ps1[0] != ps2[0]) {
27560  return (equals == Py_NE);
27561  } else if (length == 1) {
27562  return (equals == Py_EQ);
27563  } else {
27564  int result = memcmp(ps1, ps2, (size_t)length);
27565  return (equals == Py_EQ) ? (result == 0) : (result != 0);
27566  }
27567  } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
27568  return (equals == Py_NE);
27569  } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
27570  return (equals == Py_NE);
27571  } else {
27572  int result;
27573  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
27574  if (!py_result)
27575  return -1;
27576  result = __Pyx_PyObject_IsTrue(py_result);
27577  Py_DECREF(py_result);
27578  return result;
27579  }
27580 #endif
27581 }
27582 
27583 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
27584 #if CYTHON_COMPILING_IN_PYPY
27585  return PyObject_RichCompareBool(s1, s2, equals);
27586 #else
27587 #if PY_MAJOR_VERSION < 3
27588  PyObject* owned_ref = NULL;
27589 #endif
27590  int s1_is_unicode, s2_is_unicode;
27591  if (s1 == s2) {
27592  goto return_eq;
27593  }
27594  s1_is_unicode = PyUnicode_CheckExact(s1);
27595  s2_is_unicode = PyUnicode_CheckExact(s2);
27596 #if PY_MAJOR_VERSION < 3
27597  if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
27598  owned_ref = PyUnicode_FromObject(s2);
27599  if (unlikely(!owned_ref))
27600  return -1;
27601  s2 = owned_ref;
27602  s2_is_unicode = 1;
27603  } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
27604  owned_ref = PyUnicode_FromObject(s1);
27605  if (unlikely(!owned_ref))
27606  return -1;
27607  s1 = owned_ref;
27608  s1_is_unicode = 1;
27609  } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
27610  return __Pyx_PyBytes_Equals(s1, s2, equals);
27611  }
27612 #endif
27613  if (s1_is_unicode & s2_is_unicode) {
27614  Py_ssize_t length;
27615  int kind;
27616  void *data1, *data2;
27617  if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
27618  return -1;
27619  length = __Pyx_PyUnicode_GET_LENGTH(s1);
27620  if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
27621  goto return_ne;
27622  }
27623  kind = __Pyx_PyUnicode_KIND(s1);
27624  if (kind != __Pyx_PyUnicode_KIND(s2)) {
27625  goto return_ne;
27626  }
27627  data1 = __Pyx_PyUnicode_DATA(s1);
27628  data2 = __Pyx_PyUnicode_DATA(s2);
27629  if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
27630  goto return_ne;
27631  } else if (length == 1) {
27632  goto return_eq;
27633  } else {
27634  int result = memcmp(data1, data2, (size_t)(length * kind));
27635  #if PY_MAJOR_VERSION < 3
27636  Py_XDECREF(owned_ref);
27637  #endif
27638  return (equals == Py_EQ) ? (result == 0) : (result != 0);
27639  }
27640  } else if ((s1 == Py_None) & s2_is_unicode) {
27641  goto return_ne;
27642  } else if ((s2 == Py_None) & s1_is_unicode) {
27643  goto return_ne;
27644  } else {
27645  int result;
27646  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
27647  if (!py_result)
27648  return -1;
27649  result = __Pyx_PyObject_IsTrue(py_result);
27650  Py_DECREF(py_result);
27651  return result;
27652  }
27653 return_eq:
27654  #if PY_MAJOR_VERSION < 3
27655  Py_XDECREF(owned_ref);
27656  #endif
27657  return (equals == Py_EQ);
27658 return_ne:
27659  #if PY_MAJOR_VERSION < 3
27660  Py_XDECREF(owned_ref);
27661  #endif
27662  return (equals == Py_NE);
27663 #endif
27664 }
27665 
27666 #if CYTHON_COMPILING_IN_CPYTHON
27667 static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
27668  const double b = floatval;
27669  double a, result;
27670  if (likely(PyFloat_CheckExact(op1))) {
27671  a = PyFloat_AS_DOUBLE(op1);
27672  } else
27673  #if PY_MAJOR_VERSION < 3
27674  if (likely(PyInt_CheckExact(op1))) {
27675  a = (double) PyInt_AS_LONG(op1);
27676  } else
27677  #endif
27678  if (likely(PyLong_CheckExact(op1))) {
27679  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27680  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27681  const Py_ssize_t size = Py_SIZE(op1);
27682  switch (size) {
27683  case 0: a = 0.0; break;
27684  case -1: a = -(double) digits[0]; break;
27685  case 1: a = (double) digits[0]; break;
27686  case -2:
27687  case 2:
27688  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
27689  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27690  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
27691  if (size == -2)
27692  a = -a;
27693  break;
27694  }
27695  }
27696  case -3:
27697  case 3:
27698  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
27699  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27700  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
27701  if (size == -3)
27702  a = -a;
27703  break;
27704  }
27705  }
27706  case -4:
27707  case 4:
27708  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
27709  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27710  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
27711  if (size == -4)
27712  a = -a;
27713  break;
27714  }
27715  }
27716  default:
27717  #else
27718  {
27719  #endif
27720  a = PyLong_AsDouble(op1);
27721  if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
27722  }
27723  } else {
27724  return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2));
27725  }
27726  PyFPE_START_PROTECT("divide", return NULL)
27727  result = a / b;
27728  PyFPE_END_PROTECT(result)
27729  return PyFloat_FromDouble(result);
27730 }
27731 #endif
27732 
27733 #if CYTHON_COMPILING_IN_CPYTHON
27734 static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
27735  if (op1 == op2) {
27736  Py_RETURN_TRUE;
27737  }
27738  #if PY_MAJOR_VERSION < 3
27739  if (likely(PyInt_CheckExact(op1))) {
27740  const long b = intval;
27741  long a = PyInt_AS_LONG(op1);
27742  if (a == b) {
27743  Py_RETURN_TRUE;
27744  } else {
27745  Py_RETURN_FALSE;
27746  }
27747  }
27748  #endif
27749  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27750  if (likely(PyLong_CheckExact(op1))) {
27751  const long b = intval;
27752  long a;
27753  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27754  const Py_ssize_t size = Py_SIZE(op1);
27755  if (likely(__Pyx_sst_abs(size) <= 1)) {
27756  a = likely(size) ? digits[0] : 0;
27757  if (size == -1) a = -a;
27758  } else {
27759  switch (size) {
27760  case -2:
27761  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27762  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27763  break;
27764  }
27765  case 2:
27766  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27767  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27768  break;
27769  }
27770  case -3:
27771  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27772  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27773  break;
27774  }
27775  case 3:
27776  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27777  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27778  break;
27779  }
27780  case -4:
27781  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27782  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27783  break;
27784  }
27785  case 4:
27786  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27787  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27788  break;
27789  }
27790  #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
27791  default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
27792  #else
27793  default: Py_RETURN_FALSE;
27794  #endif
27795  }
27796  }
27797  if (a == b) {
27798  Py_RETURN_TRUE;
27799  } else {
27800  Py_RETURN_FALSE;
27801  }
27802  }
27803  #endif
27804  if (PyFloat_CheckExact(op1)) {
27805  const long b = intval;
27806  double a = PyFloat_AS_DOUBLE(op1);
27807  if ((double)a == (double)b) {
27808  Py_RETURN_TRUE;
27809  } else {
27810  Py_RETURN_FALSE;
27811  }
27812  }
27813  return PyObject_RichCompare(op1, op2, Py_EQ);
27814 }
27815 #endif
27816 
27817 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
27818  PyObject *method, *result = NULL;
27819  method = __Pyx_PyObject_GetAttrStr(obj, method_name);
27820  if (unlikely(!method)) goto bad;
27821 #if CYTHON_COMPILING_IN_CPYTHON
27822  if (likely(PyMethod_Check(method))) {
27823  PyObject *self = PyMethod_GET_SELF(method);
27824  if (likely(self)) {
27825  PyObject *args;
27826  PyObject *function = PyMethod_GET_FUNCTION(method);
27827  args = PyTuple_New(2);
27828  if (unlikely(!args)) goto bad;
27829  Py_INCREF(self);
27830  PyTuple_SET_ITEM(args, 0, self);
27831  Py_INCREF(arg);
27832  PyTuple_SET_ITEM(args, 1, arg);
27833  Py_INCREF(function);
27834  Py_DECREF(method); method = NULL;
27835  result = __Pyx_PyObject_Call(function, args, NULL);
27836  Py_DECREF(args);
27837  Py_DECREF(function);
27838  return result;
27839  }
27840  }
27841 #endif
27842  result = __Pyx_PyObject_CallOneArg(method, arg);
27843 bad:
27844  Py_XDECREF(method);
27845  return result;
27846 }
27847 
27848 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
27849  if (likely(PyList_CheckExact(L))) {
27850  if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
27851  } else {
27852  PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
27853  if (unlikely(!retval))
27854  return -1;
27855  Py_DECREF(retval);
27856  }
27857  return 0;
27858 }
27859 
27860 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
27861  PyObject* fake_module;
27862  PyTypeObject* cached_type = NULL;
27863  fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
27864  if (!fake_module) return NULL;
27865  Py_INCREF(fake_module);
27866  cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
27867  if (cached_type) {
27868  if (!PyType_Check((PyObject*)cached_type)) {
27869  PyErr_Format(PyExc_TypeError,
27870  "Shared Cython type %.200s is not a type object",
27871  type->tp_name);
27872  goto bad;
27873  }
27874  if (cached_type->tp_basicsize != type->tp_basicsize) {
27875  PyErr_Format(PyExc_TypeError,
27876  "Shared Cython type %.200s has the wrong size, try recompiling",
27877  type->tp_name);
27878  goto bad;
27879  }
27880  } else {
27881  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
27882  PyErr_Clear();
27883  if (PyType_Ready(type) < 0) goto bad;
27884  if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
27885  goto bad;
27886  Py_INCREF(type);
27887  cached_type = type;
27888  }
27889 done:
27890  Py_DECREF(fake_module);
27891  return cached_type;
27892 bad:
27893  Py_XDECREF(cached_type);
27894  cached_type = NULL;
27895  goto done;
27896 }
27897 
27898 static PyObject *
27899 __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
27900 {
27901  if (unlikely(op->func_doc == NULL)) {
27902  if (op->func.m_ml->ml_doc) {
27903 #if PY_MAJOR_VERSION >= 3
27904  op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
27905 #else
27906  op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
27907 #endif
27908  if (unlikely(op->func_doc == NULL))
27909  return NULL;
27910  } else {
27911  Py_INCREF(Py_None);
27912  return Py_None;
27913  }
27914  }
27915  Py_INCREF(op->func_doc);
27916  return op->func_doc;
27917 }
27918 static int
27919 __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
27920 {
27921  PyObject *tmp = op->func_doc;
27922  if (value == NULL) {
27923  value = Py_None;
27924  }
27925  Py_INCREF(value);
27926  op->func_doc = value;
27927  Py_XDECREF(tmp);
27928  return 0;
27929 }
27930 static PyObject *
27931 __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
27932 {
27933  if (unlikely(op->func_name == NULL)) {
27934 #if PY_MAJOR_VERSION >= 3
27935  op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
27936 #else
27937  op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
27938 #endif
27939  if (unlikely(op->func_name == NULL))
27940  return NULL;
27941  }
27942  Py_INCREF(op->func_name);
27943  return op->func_name;
27944 }
27945 static int
27946 __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
27947 {
27948  PyObject *tmp;
27949 #if PY_MAJOR_VERSION >= 3
27950  if (unlikely(value == NULL || !PyUnicode_Check(value))) {
27951 #else
27952  if (unlikely(value == NULL || !PyString_Check(value))) {
27953 #endif
27954  PyErr_SetString(PyExc_TypeError,
27955  "__name__ must be set to a string object");
27956  return -1;
27957  }
27958  tmp = op->func_name;
27959  Py_INCREF(value);
27960  op->func_name = value;
27961  Py_XDECREF(tmp);
27962  return 0;
27963 }
27964 static PyObject *
27965 __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
27966 {
27967  Py_INCREF(op->func_qualname);
27968  return op->func_qualname;
27969 }
27970 static int
27971 __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
27972 {
27973  PyObject *tmp;
27974 #if PY_MAJOR_VERSION >= 3
27975  if (unlikely(value == NULL || !PyUnicode_Check(value))) {
27976 #else
27977  if (unlikely(value == NULL || !PyString_Check(value))) {
27978 #endif
27979  PyErr_SetString(PyExc_TypeError,
27980  "__qualname__ must be set to a string object");
27981  return -1;
27982  }
27983  tmp = op->func_qualname;
27984  Py_INCREF(value);
27985  op->func_qualname = value;
27986  Py_XDECREF(tmp);
27987  return 0;
27988 }
27989 static PyObject *
27990 __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
27991 {
27992  PyObject *self;
27993  self = m->func_closure;
27994  if (self == NULL)
27995  self = Py_None;
27996  Py_INCREF(self);
27997  return self;
27998 }
27999 static PyObject *
28000 __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
28001 {
28002  if (unlikely(op->func_dict == NULL)) {
28003  op->func_dict = PyDict_New();
28004  if (unlikely(op->func_dict == NULL))
28005  return NULL;
28006  }
28007  Py_INCREF(op->func_dict);
28008  return op->func_dict;
28009 }
28010 static int
28011 __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
28012 {
28013  PyObject *tmp;
28014  if (unlikely(value == NULL)) {
28015  PyErr_SetString(PyExc_TypeError,
28016  "function's dictionary may not be deleted");
28017  return -1;
28018  }
28019  if (unlikely(!PyDict_Check(value))) {
28020  PyErr_SetString(PyExc_TypeError,
28021  "setting function's dictionary to a non-dict");
28022  return -1;
28023  }
28024  tmp = op->func_dict;
28025  Py_INCREF(value);
28026  op->func_dict = value;
28027  Py_XDECREF(tmp);
28028  return 0;
28029 }
28030 static PyObject *
28031 __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
28032 {
28033  Py_INCREF(op->func_globals);
28034  return op->func_globals;
28035 }
28036 static PyObject *
28037 __Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
28038 {
28039  Py_INCREF(Py_None);
28040  return Py_None;
28041 }
28042 static PyObject *
28043 __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
28044 {
28045  PyObject* result = (op->func_code) ? op->func_code : Py_None;
28046  Py_INCREF(result);
28047  return result;
28048 }
28049 static int
28050 __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
28051  int result = 0;
28052  PyObject *res = op->defaults_getter((PyObject *) op);
28053  if (unlikely(!res))
28054  return -1;
28055  #if CYTHON_COMPILING_IN_CPYTHON
28056  op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
28057  Py_INCREF(op->defaults_tuple);
28058  op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
28059  Py_INCREF(op->defaults_kwdict);
28060  #else
28061  op->defaults_tuple = PySequence_ITEM(res, 0);
28062  if (unlikely(!op->defaults_tuple)) result = -1;
28063  else {
28064  op->defaults_kwdict = PySequence_ITEM(res, 1);
28065  if (unlikely(!op->defaults_kwdict)) result = -1;
28066  }
28067  #endif
28068  Py_DECREF(res);
28069  return result;
28070 }
28071 static int
28072 __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
28073  PyObject* tmp;
28074  if (!value) {
28075  value = Py_None;
28076  } else if (value != Py_None && !PyTuple_Check(value)) {
28077  PyErr_SetString(PyExc_TypeError,
28078  "__defaults__ must be set to a tuple object");
28079  return -1;
28080  }
28081  Py_INCREF(value);
28082  tmp = op->defaults_tuple;
28083  op->defaults_tuple = value;
28084  Py_XDECREF(tmp);
28085  return 0;
28086 }
28087 static PyObject *
28088 __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
28089  PyObject* result = op->defaults_tuple;
28090  if (unlikely(!result)) {
28091  if (op->defaults_getter) {
28092  if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
28093  result = op->defaults_tuple;
28094  } else {
28095  result = Py_None;
28096  }
28097  }
28098  Py_INCREF(result);
28099  return result;
28100 }
28101 static int
28102 __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
28103  PyObject* tmp;
28104  if (!value) {
28105  value = Py_None;
28106  } else if (value != Py_None && !PyDict_Check(value)) {
28107  PyErr_SetString(PyExc_TypeError,
28108  "__kwdefaults__ must be set to a dict object");
28109  return -1;
28110  }
28111  Py_INCREF(value);
28112  tmp = op->defaults_kwdict;
28113  op->defaults_kwdict = value;
28114  Py_XDECREF(tmp);
28115  return 0;
28116 }
28117 static PyObject *
28118 __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
28119  PyObject* result = op->defaults_kwdict;
28120  if (unlikely(!result)) {
28121  if (op->defaults_getter) {
28122  if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
28123  result = op->defaults_kwdict;
28124  } else {
28125  result = Py_None;
28126  }
28127  }
28128  Py_INCREF(result);
28129  return result;
28130 }
28131 static int
28132 __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
28133  PyObject* tmp;
28134  if (!value || value == Py_None) {
28135  value = NULL;
28136  } else if (!PyDict_Check(value)) {
28137  PyErr_SetString(PyExc_TypeError,
28138  "__annotations__ must be set to a dict object");
28139  return -1;
28140  }
28141  Py_XINCREF(value);
28142  tmp = op->func_annotations;
28143  op->func_annotations = value;
28144  Py_XDECREF(tmp);
28145  return 0;
28146 }
28147 static PyObject *
28148 __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
28149  PyObject* result = op->func_annotations;
28150  if (unlikely(!result)) {
28151  result = PyDict_New();
28152  if (unlikely(!result)) return NULL;
28153  op->func_annotations = result;
28154  }
28155  Py_INCREF(result);
28156  return result;
28157 }
28158 static PyGetSetDef __pyx_CyFunction_getsets[] = {
28159  {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
28160  {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
28161  {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
28162  {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
28163  {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
28164  {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
28165  {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
28166  {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
28167  {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
28168  {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
28169  {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
28170  {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
28171  {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
28172  {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
28173  {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
28174  {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
28175  {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
28176  {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
28177  {0, 0, 0, 0, 0}
28178 };
28179 static PyMemberDef __pyx_CyFunction_members[] = {
28180  {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0},
28181  {0, 0, 0, 0, 0}
28182 };
28183 static PyObject *
28184 __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
28185 {
28186 #if PY_MAJOR_VERSION >= 3
28187  return PyUnicode_FromString(m->func.m_ml->ml_name);
28188 #else
28189  return PyString_FromString(m->func.m_ml->ml_name);
28190 #endif
28191 }
28192 static PyMethodDef __pyx_CyFunction_methods[] = {
28193  {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
28194  {0, 0, 0, 0}
28195 };
28196 #if PY_VERSION_HEX < 0x030500A0
28197 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
28198 #else
28199 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
28200 #endif
28201 static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,
28202  PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
28203  __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);
28204  if (op == NULL)
28205  return NULL;
28206  op->flags = flags;
28207  __Pyx_CyFunction_weakreflist(op) = NULL;
28208  op->func.m_ml = ml;
28209  op->func.m_self = (PyObject *) op;
28210  Py_XINCREF(closure);
28211  op->func_closure = closure;
28212  Py_XINCREF(module);
28213  op->func.m_module = module;
28214  op->func_dict = NULL;
28215  op->func_name = NULL;
28216  Py_INCREF(qualname);
28217  op->func_qualname = qualname;
28218  op->func_doc = NULL;
28219  op->func_classobj = NULL;
28220  op->func_globals = globals;
28221  Py_INCREF(op->func_globals);
28222  Py_XINCREF(code);
28223  op->func_code = code;
28224  op->defaults_pyobjects = 0;
28225  op->defaults = NULL;
28226  op->defaults_tuple = NULL;
28227  op->defaults_kwdict = NULL;
28228  op->defaults_getter = NULL;
28229  op->func_annotations = NULL;
28230  PyObject_GC_Track(op);
28231  return (PyObject *) op;
28232 }
28233 static int
28234 __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
28235 {
28236  Py_CLEAR(m->func_closure);
28237  Py_CLEAR(m->func.m_module);
28238  Py_CLEAR(m->func_dict);
28239  Py_CLEAR(m->func_name);
28240  Py_CLEAR(m->func_qualname);
28241  Py_CLEAR(m->func_doc);
28242  Py_CLEAR(m->func_globals);
28243  Py_CLEAR(m->func_code);
28244  Py_CLEAR(m->func_classobj);
28245  Py_CLEAR(m->defaults_tuple);
28246  Py_CLEAR(m->defaults_kwdict);
28247  Py_CLEAR(m->func_annotations);
28248  if (m->defaults) {
28249  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
28250  int i;
28251  for (i = 0; i < m->defaults_pyobjects; i++)
28252  Py_XDECREF(pydefaults[i]);
28253  PyMem_Free(m->defaults);
28254  m->defaults = NULL;
28255  }
28256  return 0;
28257 }
28258 static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
28259 {
28260  PyObject_GC_UnTrack(m);
28261  if (__Pyx_CyFunction_weakreflist(m) != NULL)
28262  PyObject_ClearWeakRefs((PyObject *) m);
28263  __Pyx_CyFunction_clear(m);
28264  PyObject_GC_Del(m);
28265 }
28266 static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
28267 {
28268  Py_VISIT(m->func_closure);
28269  Py_VISIT(m->func.m_module);
28270  Py_VISIT(m->func_dict);
28271  Py_VISIT(m->func_name);
28272  Py_VISIT(m->func_qualname);
28273  Py_VISIT(m->func_doc);
28274  Py_VISIT(m->func_globals);
28275  Py_VISIT(m->func_code);
28276  Py_VISIT(m->func_classobj);
28277  Py_VISIT(m->defaults_tuple);
28278  Py_VISIT(m->defaults_kwdict);
28279  if (m->defaults) {
28280  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
28281  int i;
28282  for (i = 0; i < m->defaults_pyobjects; i++)
28283  Py_VISIT(pydefaults[i]);
28284  }
28285  return 0;
28286 }
28287 static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
28288 {
28289  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28290  if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
28291  Py_INCREF(func);
28292  return func;
28293  }
28294  if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
28295  if (type == NULL)
28296  type = (PyObject *)(Py_TYPE(obj));
28297  return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
28298  }
28299  if (obj == Py_None)
28300  obj = NULL;
28301  return __Pyx_PyMethod_New(func, obj, type);
28302 }
28303 static PyObject*
28304 __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
28305 {
28306 #if PY_MAJOR_VERSION >= 3
28307  return PyUnicode_FromFormat("<cyfunction %U at %p>",
28308  op->func_qualname, (void *)op);
28309 #else
28310  return PyString_FromFormat("<cyfunction %s at %p>",
28311  PyString_AsString(op->func_qualname), (void *)op);
28312 #endif
28313 }
28314 #if CYTHON_COMPILING_IN_PYPY
28315 static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
28316  PyCFunctionObject* f = (PyCFunctionObject*)func;
28317  PyCFunction meth = f->m_ml->ml_meth;
28318  PyObject *self = f->m_self;
28319  Py_ssize_t size;
28320  switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
28321  case METH_VARARGS:
28322  if (likely(kw == NULL || PyDict_Size(kw) == 0))
28323  return (*meth)(self, arg);
28324  break;
28325  case METH_VARARGS | METH_KEYWORDS:
28326  return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
28327  case METH_NOARGS:
28328  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
28329  size = PyTuple_GET_SIZE(arg);
28330  if (likely(size == 0))
28331  return (*meth)(self, NULL);
28332  PyErr_Format(PyExc_TypeError,
28333  "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
28334  f->m_ml->ml_name, size);
28335  return NULL;
28336  }
28337  break;
28338  case METH_O:
28339  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
28340  size = PyTuple_GET_SIZE(arg);
28341  if (likely(size == 1)) {
28342  PyObject *result, *arg0 = PySequence_ITEM(arg, 0);
28343  if (unlikely(!arg0)) return NULL;
28344  result = (*meth)(self, arg0);
28345  Py_DECREF(arg0);
28346  return result;
28347  }
28348  PyErr_Format(PyExc_TypeError,
28349  "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
28350  f->m_ml->ml_name, size);
28351  return NULL;
28352  }
28353  break;
28354  default:
28355  PyErr_SetString(PyExc_SystemError, "Bad call flags in "
28356  "__Pyx_CyFunction_Call. METH_OLDARGS is no "
28357  "longer supported!");
28358  return NULL;
28359  }
28360  PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
28361  f->m_ml->ml_name);
28362  return NULL;
28363 }
28364 #else
28365 static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
28366  return PyCFunction_Call(func, arg, kw);
28367 }
28368 #endif
28369 static PyTypeObject __pyx_CyFunctionType_type = {
28370  PyVarObject_HEAD_INIT(0, 0)
28371  "cython_function_or_method",
28372  sizeof(__pyx_CyFunctionObject),
28373  0,
28374  (destructor) __Pyx_CyFunction_dealloc,
28375  0,
28376  0,
28377  0,
28378 #if PY_MAJOR_VERSION < 3
28379  0,
28380 #else
28381  0,
28382 #endif
28383  (reprfunc) __Pyx_CyFunction_repr,
28384  0,
28385  0,
28386  0,
28387  0,
28388  __Pyx_CyFunction_Call,
28389  0,
28390  0,
28391  0,
28392  0,
28393  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
28394  0,
28395  (traverseproc) __Pyx_CyFunction_traverse,
28396  (inquiry) __Pyx_CyFunction_clear,
28397  0,
28398 #if PY_VERSION_HEX < 0x030500A0
28399  offsetof(__pyx_CyFunctionObject, func_weakreflist),
28400 #else
28401  offsetof(PyCFunctionObject, m_weakreflist),
28402 #endif
28403  0,
28404  0,
28405  __pyx_CyFunction_methods,
28406  __pyx_CyFunction_members,
28407  __pyx_CyFunction_getsets,
28408  0,
28409  0,
28410  __Pyx_CyFunction_descr_get,
28411  0,
28412  offsetof(__pyx_CyFunctionObject, func_dict),
28413  0,
28414  0,
28415  0,
28416  0,
28417  0,
28418  0,
28419  0,
28420  0,
28421  0,
28422  0,
28423  0,
28424  0,
28425 #if PY_VERSION_HEX >= 0x030400a1
28426  0,
28427 #endif
28428 };
28429 static int __pyx_CyFunction_init(void) {
28430 #if !CYTHON_COMPILING_IN_PYPY
28431  __pyx_CyFunctionType_type.tp_call = PyCFunction_Call;
28432 #endif
28433  __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
28434  if (__pyx_CyFunctionType == NULL) {
28435  return -1;
28436  }
28437  return 0;
28438 }
28439 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
28440  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28441  m->defaults = PyMem_Malloc(size);
28442  if (!m->defaults)
28443  return PyErr_NoMemory();
28444  memset(m->defaults, 0, size);
28445  m->defaults_pyobjects = pyobjects;
28446  return m->defaults;
28447 }
28448 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
28449  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28450  m->defaults_tuple = tuple;
28451  Py_INCREF(tuple);
28452 }
28453 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
28454  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28455  m->defaults_kwdict = dict;
28456  Py_INCREF(dict);
28457 }
28458 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
28459  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28460  m->func_annotations = dict;
28461  Py_INCREF(dict);
28462 }
28463 
28464 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
28465  Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
28466  for (i=0; i < nbases; i++) {
28467  PyTypeObject *tmptype;
28468  PyObject *tmp = PyTuple_GET_ITEM(bases, i);
28469  tmptype = Py_TYPE(tmp);
28470 #if PY_MAJOR_VERSION < 3
28471  if (tmptype == &PyClass_Type)
28472  continue;
28473 #endif
28474  if (!metaclass) {
28475  metaclass = tmptype;
28476  continue;
28477  }
28478  if (PyType_IsSubtype(metaclass, tmptype))
28479  continue;
28480  if (PyType_IsSubtype(tmptype, metaclass)) {
28481  metaclass = tmptype;
28482  continue;
28483  }
28484  PyErr_SetString(PyExc_TypeError,
28485  "metaclass conflict: "
28486  "the metaclass of a derived class "
28487  "must be a (non-strict) subclass "
28488  "of the metaclasses of all its bases");
28489  return NULL;
28490  }
28491  if (!metaclass) {
28492 #if PY_MAJOR_VERSION < 3
28493  metaclass = &PyClass_Type;
28494 #else
28495  metaclass = &PyType_Type;
28496 #endif
28497  }
28498  Py_INCREF((PyObject*) metaclass);
28499  return (PyObject*) metaclass;
28500 }
28501 
28502 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
28503  PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
28504  PyObject *ns;
28505  if (metaclass) {
28506  PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
28507  if (prep) {
28508  PyObject *pargs = PyTuple_Pack(2, name, bases);
28509  if (unlikely(!pargs)) {
28510  Py_DECREF(prep);
28511  return NULL;
28512  }
28513  ns = PyObject_Call(prep, pargs, mkw);
28514  Py_DECREF(prep);
28515  Py_DECREF(pargs);
28516  } else {
28517  if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
28518  return NULL;
28519  PyErr_Clear();
28520  ns = PyDict_New();
28521  }
28522  } else {
28523  ns = PyDict_New();
28524  }
28525  if (unlikely(!ns))
28526  return NULL;
28527  if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
28528  if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
28529  if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
28530  return ns;
28531 bad:
28532  Py_DECREF(ns);
28533  return NULL;
28534 }
28535 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
28536  PyObject *dict, PyObject *mkw,
28537  int calculate_metaclass, int allow_py2_metaclass) {
28538  PyObject *result, *margs;
28539  PyObject *owned_metaclass = NULL;
28540  if (allow_py2_metaclass) {
28541  owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
28542  if (owned_metaclass) {
28543  metaclass = owned_metaclass;
28544  } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
28545  PyErr_Clear();
28546  } else {
28547  return NULL;
28548  }
28549  }
28550  if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
28551  metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
28552  Py_XDECREF(owned_metaclass);
28553  if (unlikely(!metaclass))
28554  return NULL;
28555  owned_metaclass = metaclass;
28556  }
28557  margs = PyTuple_Pack(3, name, bases, dict);
28558  if (unlikely(!margs)) {
28559  result = NULL;
28560  } else {
28561  result = PyObject_Call(metaclass, margs, mkw);
28562  Py_DECREF(margs);
28563  }
28564  Py_XDECREF(owned_metaclass);
28565  return result;
28566 }
28567 
28568 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
28569  int start = 0, mid = 0, end = count - 1;
28570  if (end >= 0 && code_line > entries[end].code_line) {
28571  return count;
28572  }
28573  while (start < end) {
28574  mid = start + (end - start) / 2;
28575  if (code_line < entries[mid].code_line) {
28576  end = mid;
28577  } else if (code_line > entries[mid].code_line) {
28578  start = mid + 1;
28579  } else {
28580  return mid;
28581  }
28582  }
28583  if (code_line <= entries[mid].code_line) {
28584  return mid;
28585  } else {
28586  return mid + 1;
28587  }
28588 }
28589 static PyCodeObject *__pyx_find_code_object(int code_line) {
28590  PyCodeObject* code_object;
28591  int pos;
28592  if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
28593  return NULL;
28594  }
28595  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
28596  if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
28597  return NULL;
28598  }
28599  code_object = __pyx_code_cache.entries[pos].code_object;
28600  Py_INCREF(code_object);
28601  return code_object;
28602 }
28603 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
28604  int pos, i;
28605  __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
28606  if (unlikely(!code_line)) {
28607  return;
28608  }
28609  if (unlikely(!entries)) {
28610  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
28611  if (likely(entries)) {
28612  __pyx_code_cache.entries = entries;
28613  __pyx_code_cache.max_count = 64;
28614  __pyx_code_cache.count = 1;
28615  entries[0].code_line = code_line;
28616  entries[0].code_object = code_object;
28617  Py_INCREF(code_object);
28618  }
28619  return;
28620  }
28621  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
28622  if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
28623  PyCodeObject* tmp = entries[pos].code_object;
28624  entries[pos].code_object = code_object;
28625  Py_DECREF(tmp);
28626  return;
28627  }
28628  if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
28629  int new_max = __pyx_code_cache.max_count + 64;
28630  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
28631  __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
28632  if (unlikely(!entries)) {
28633  return;
28634  }
28635  __pyx_code_cache.entries = entries;
28636  __pyx_code_cache.max_count = new_max;
28637  }
28638  for (i=__pyx_code_cache.count; i>pos; i--) {
28639  entries[i] = entries[i-1];
28640  }
28641  entries[pos].code_line = code_line;
28642  entries[pos].code_object = code_object;
28643  __pyx_code_cache.count++;
28644  Py_INCREF(code_object);
28645 }
28646 
28647 #include "compile.h"
28648 #include "frameobject.h"
28649 #include "traceback.h"
28650 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
28651  const char *funcname, int c_line,
28652  int py_line, const char *filename) {
28653  PyCodeObject *py_code = 0;
28654  PyObject *py_srcfile = 0;
28655  PyObject *py_funcname = 0;
28656  #if PY_MAJOR_VERSION < 3
28657  py_srcfile = PyString_FromString(filename);
28658  #else
28659  py_srcfile = PyUnicode_FromString(filename);
28660  #endif
28661  if (!py_srcfile) goto bad;
28662  if (c_line) {
28663  #if PY_MAJOR_VERSION < 3
28664  py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
28665  #else
28666  py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
28667  #endif
28668  }
28669  else {
28670  #if PY_MAJOR_VERSION < 3
28671  py_funcname = PyString_FromString(funcname);
28672  #else
28673  py_funcname = PyUnicode_FromString(funcname);
28674  #endif
28675  }
28676  if (!py_funcname) goto bad;
28677  py_code = __Pyx_PyCode_New(
28678  0,
28679  0,
28680  0,
28681  0,
28682  0,
28683  __pyx_empty_bytes, /*PyObject *code,*/
28684  __pyx_empty_tuple, /*PyObject *consts,*/
28685  __pyx_empty_tuple, /*PyObject *names,*/
28686  __pyx_empty_tuple, /*PyObject *varnames,*/
28687  __pyx_empty_tuple, /*PyObject *freevars,*/
28688  __pyx_empty_tuple, /*PyObject *cellvars,*/
28689  py_srcfile, /*PyObject *filename,*/
28690  py_funcname, /*PyObject *name,*/
28691  py_line,
28692  __pyx_empty_bytes /*PyObject *lnotab*/
28693  );
28694  Py_DECREF(py_srcfile);
28695  Py_DECREF(py_funcname);
28696  return py_code;
28697 bad:
28698  Py_XDECREF(py_srcfile);
28699  Py_XDECREF(py_funcname);
28700  return NULL;
28701 }
28702 static void __Pyx_AddTraceback(const char *funcname, int c_line,
28703  int py_line, const char *filename) {
28704  PyCodeObject *py_code = 0;
28705  PyFrameObject *py_frame = 0;
28706  py_code = __pyx_find_code_object(c_line ? c_line : py_line);
28707  if (!py_code) {
28708  py_code = __Pyx_CreateCodeObjectForTraceback(
28709  funcname, c_line, py_line, filename);
28710  if (!py_code) goto bad;
28711  __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
28712  }
28713  py_frame = PyFrame_New(
28714  PyThreadState_GET(), /*PyThreadState *tstate,*/
28715  py_code, /*PyCodeObject *code,*/
28716  __pyx_d, /*PyObject *globals,*/
28717  0 /*PyObject *locals*/
28718  );
28719  if (!py_frame) goto bad;
28720  py_frame->f_lineno = py_line;
28721  PyTraceBack_Here(py_frame);
28722 bad:
28723  Py_XDECREF(py_code);
28724  Py_XDECREF(py_frame);
28725 }
28726 
28727 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
28728  const long neg_one = (long) -1, const_zero = (long) 0;
28729  const int is_unsigned = neg_one > const_zero;
28730  if (is_unsigned) {
28731  if (sizeof(long) < sizeof(long)) {
28732  return PyInt_FromLong((long) value);
28733  } else if (sizeof(long) <= sizeof(unsigned long)) {
28734  return PyLong_FromUnsignedLong((unsigned long) value);
28735  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
28736  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
28737  }
28738  } else {
28739  if (sizeof(long) <= sizeof(long)) {
28740  return PyInt_FromLong((long) value);
28741  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
28742  return PyLong_FromLongLong((PY_LONG_LONG) value);
28743  }
28744  }
28745  {
28746  int one = 1; int little = (int)*(unsigned char *)&one;
28747  unsigned char *bytes = (unsigned char *)&value;
28748  return _PyLong_FromByteArray(bytes, sizeof(long),
28749  little, !is_unsigned);
28750  }
28751 }
28752 
28753 #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
28754  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
28755 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
28756  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
28757 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
28758  {\
28759  func_type value = func_value;\
28760  if (sizeof(target_type) < sizeof(func_type)) {\
28761  if (unlikely(value != (func_type) (target_type) value)) {\
28762  func_type zero = 0;\
28763  if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
28764  return (target_type) -1;\
28765  if (is_unsigned && unlikely(value < zero))\
28766  goto raise_neg_overflow;\
28767  else\
28768  goto raise_overflow;\
28769  }\
28770  }\
28771  return (target_type) value;\
28772  }
28773 
28774 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
28775  const long neg_one = (long) -1, const_zero = (long) 0;
28776  const int is_unsigned = neg_one > const_zero;
28777 #if PY_MAJOR_VERSION < 3
28778  if (likely(PyInt_Check(x))) {
28779  if (sizeof(long) < sizeof(long)) {
28780  __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
28781  } else {
28782  long val = PyInt_AS_LONG(x);
28783  if (is_unsigned && unlikely(val < 0)) {
28784  goto raise_neg_overflow;
28785  }
28786  return (long) val;
28787  }
28788  } else
28789 #endif
28790  if (likely(PyLong_Check(x))) {
28791  if (is_unsigned) {
28792 #if CYTHON_USE_PYLONG_INTERNALS
28793  const digit* digits = ((PyLongObject*)x)->ob_digit;
28794  switch (Py_SIZE(x)) {
28795  case 0: return (long) 0;
28796  case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
28797  case 2:
28798  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
28799  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28800  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28801  } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
28802  return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
28803  }
28804  }
28805  break;
28806  case 3:
28807  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
28808  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28809  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28810  } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
28811  return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
28812  }
28813  }
28814  break;
28815  case 4:
28816  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
28817  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28818  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28819  } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
28820  return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
28821  }
28822  }
28823  break;
28824  }
28825 #endif
28826 #if CYTHON_COMPILING_IN_CPYTHON
28827  if (unlikely(Py_SIZE(x) < 0)) {
28828  goto raise_neg_overflow;
28829  }
28830 #else
28831  {
28832  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
28833  if (unlikely(result < 0))
28834  return (long) -1;
28835  if (unlikely(result == 1))
28836  goto raise_neg_overflow;
28837  }
28838 #endif
28839  if (sizeof(long) <= sizeof(unsigned long)) {
28840  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
28841  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
28842  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
28843  }
28844  } else {
28845 #if CYTHON_USE_PYLONG_INTERNALS
28846  const digit* digits = ((PyLongObject*)x)->ob_digit;
28847  switch (Py_SIZE(x)) {
28848  case 0: return (long) 0;
28849  case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) digits[0])
28850  case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
28851  case -2:
28852  if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
28853  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28854  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28855  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
28856  return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28857  }
28858  }
28859  break;
28860  case 2:
28861  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
28862  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28863  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28864  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
28865  return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28866  }
28867  }
28868  break;
28869  case -3:
28870  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
28871  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28872  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28873  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
28874  return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28875  }
28876  }
28877  break;
28878  case 3:
28879  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
28880  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28881  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28882  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
28883  return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28884  }
28885  }
28886  break;
28887  case -4:
28888  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
28889  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28890  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28891  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
28892  return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28893  }
28894  }
28895  break;
28896  case 4:
28897  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
28898  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28899  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28900  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
28901  return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28902  }
28903  }
28904  break;
28905  }
28906 #endif
28907  if (sizeof(long) <= sizeof(long)) {
28908  __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
28909  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
28910  __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
28911  }
28912  }
28913  {
28914 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
28915  PyErr_SetString(PyExc_RuntimeError,
28916  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
28917 #else
28918  long val;
28919  PyObject *v = __Pyx_PyNumber_Int(x);
28920  #if PY_MAJOR_VERSION < 3
28921  if (likely(v) && !PyLong_Check(v)) {
28922  PyObject *tmp = v;
28923  v = PyNumber_Long(tmp);
28924  Py_DECREF(tmp);
28925  }
28926  #endif
28927  if (likely(v)) {
28928  int one = 1; int is_little = (int)*(unsigned char *)&one;
28929  unsigned char *bytes = (unsigned char *)&val;
28930  int ret = _PyLong_AsByteArray((PyLongObject *)v,
28931  bytes, sizeof(val),
28932  is_little, !is_unsigned);
28933  Py_DECREF(v);
28934  if (likely(!ret))
28935  return val;
28936  }
28937 #endif
28938  return (long) -1;
28939  }
28940  } else {
28941  long val;
28942  PyObject *tmp = __Pyx_PyNumber_Int(x);
28943  if (!tmp) return (long) -1;
28944  val = __Pyx_PyInt_As_long(tmp);
28945  Py_DECREF(tmp);
28946  return val;
28947  }
28948 raise_overflow:
28949  PyErr_SetString(PyExc_OverflowError,
28950  "value too large to convert to long");
28951  return (long) -1;
28952 raise_neg_overflow:
28953  PyErr_SetString(PyExc_OverflowError,
28954  "can't convert negative value to long");
28955  return (long) -1;
28956 }
28957 
28958 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
28959  const int neg_one = (int) -1, const_zero = (int) 0;
28960  const int is_unsigned = neg_one > const_zero;
28961 #if PY_MAJOR_VERSION < 3
28962  if (likely(PyInt_Check(x))) {
28963  if (sizeof(int) < sizeof(long)) {
28964  __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
28965  } else {
28966  long val = PyInt_AS_LONG(x);
28967  if (is_unsigned && unlikely(val < 0)) {
28968  goto raise_neg_overflow;
28969  }
28970  return (int) val;
28971  }
28972  } else
28973 #endif
28974  if (likely(PyLong_Check(x))) {
28975  if (is_unsigned) {
28976 #if CYTHON_USE_PYLONG_INTERNALS
28977  const digit* digits = ((PyLongObject*)x)->ob_digit;
28978  switch (Py_SIZE(x)) {
28979  case 0: return (int) 0;
28980  case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
28981  case 2:
28982  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
28983  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28984  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28985  } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
28986  return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
28987  }
28988  }
28989  break;
28990  case 3:
28991  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
28992  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28993  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28994  } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
28995  return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
28996  }
28997  }
28998  break;
28999  case 4:
29000  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
29001  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
29002  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
29003  } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
29004  return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
29005  }
29006  }
29007  break;
29008  }
29009 #endif
29010 #if CYTHON_COMPILING_IN_CPYTHON
29011  if (unlikely(Py_SIZE(x) < 0)) {
29012  goto raise_neg_overflow;
29013  }
29014 #else
29015  {
29016  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
29017  if (unlikely(result < 0))
29018  return (int) -1;
29019  if (unlikely(result == 1))
29020  goto raise_neg_overflow;
29021  }
29022 #endif
29023  if (sizeof(int) <= sizeof(unsigned long)) {
29024  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
29025  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
29026  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
29027  }
29028  } else {
29029 #if CYTHON_USE_PYLONG_INTERNALS
29030  const digit* digits = ((PyLongObject*)x)->ob_digit;
29031  switch (Py_SIZE(x)) {
29032  case 0: return (int) 0;
29033  case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) digits[0])
29034  case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
29035  case -2:
29036  if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
29037  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
29038  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
29039  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
29040  return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
29041  }
29042  }
29043  break;
29044  case 2:
29045  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
29046  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
29047  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
29048  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
29049  return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
29050  }
29051  }
29052  break;
29053  case -3:
29054  if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
29055  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
29056  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
29057  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
29058  return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
29059  }
29060  }
29061  break;
29062  case 3:
29063  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
29064  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
29065  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
29066  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
29067  return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
29068  }
29069  }
29070  break;
29071  case -4:
29072  if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
29073  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
29074  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
29075  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
29076  return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
29077  }
29078  }
29079  break;
29080  case 4:
29081  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
29082  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
29083  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
29084  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
29085  return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
29086  }
29087  }
29088  break;
29089  }
29090 #endif
29091  if (sizeof(int) <= sizeof(long)) {
29092  __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
29093  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
29094  __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
29095  }
29096  }
29097  {
29098 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
29099  PyErr_SetString(PyExc_RuntimeError,
29100  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
29101 #else
29102  int val;
29103  PyObject *v = __Pyx_PyNumber_Int(x);
29104  #if PY_MAJOR_VERSION < 3
29105  if (likely(v) && !PyLong_Check(v)) {
29106  PyObject *tmp = v;
29107  v = PyNumber_Long(tmp);
29108  Py_DECREF(tmp);
29109  }
29110  #endif
29111  if (likely(v)) {
29112  int one = 1; int is_little = (int)*(unsigned char *)&one;
29113  unsigned char *bytes = (unsigned char *)&val;
29114  int ret = _PyLong_AsByteArray((PyLongObject *)v,
29115  bytes, sizeof(val),
29116  is_little, !is_unsigned);
29117  Py_DECREF(v);
29118  if (likely(!ret))
29119  return val;
29120  }
29121 #endif
29122  return (int) -1;
29123  }
29124  } else {
29125  int val;
29126  PyObject *tmp = __Pyx_PyNumber_Int(x);
29127  if (!tmp) return (int) -1;
29128  val = __Pyx_PyInt_As_int(tmp);
29129  Py_DECREF(tmp);
29130  return val;
29131  }
29132 raise_overflow:
29133  PyErr_SetString(PyExc_OverflowError,
29134  "value too large to convert to int");
29135  return (int) -1;
29136 raise_neg_overflow:
29137  PyErr_SetString(PyExc_OverflowError,
29138  "can't convert negative value to int");
29139  return (int) -1;
29140 }
29141 
29142 static int __Pyx_check_binary_version(void) {
29143  char ctversion[4], rtversion[4];
29144  PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
29145  PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
29146  if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
29147  char message[200];
29148  PyOS_snprintf(message, sizeof(message),
29149  "compiletime version %s of module '%.100s' "
29150  "does not match runtime version %s",
29151  ctversion, __Pyx_MODULE_NAME, rtversion);
29152  return PyErr_WarnEx(NULL, message, 1);
29153  }
29154  return 0;
29155 }
29156 
29157 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
29158  while (t->p) {
29159  #if PY_MAJOR_VERSION < 3
29160  if (t->is_unicode) {
29161  *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
29162  } else if (t->intern) {
29163  *t->p = PyString_InternFromString(t->s);
29164  } else {
29165  *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
29166  }
29167  #else
29168  if (t->is_unicode | t->is_str) {
29169  if (t->intern) {
29170  *t->p = PyUnicode_InternFromString(t->s);
29171  } else if (t->encoding) {
29172  *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
29173  } else {
29174  *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
29175  }
29176  } else {
29177  *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
29178  }
29179  #endif
29180  if (!*t->p)
29181  return -1;
29182  ++t;
29183  }
29184  return 0;
29185 }
29186 
29187 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
29188  return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
29189 }
29190 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
29191  Py_ssize_t ignore;
29192  return __Pyx_PyObject_AsStringAndSize(o, &ignore);
29193 }
29194 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
29195 #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
29196  if (
29197 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
29198  __Pyx_sys_getdefaultencoding_not_ascii &&
29199 #endif
29200  PyUnicode_Check(o)) {
29201 #if PY_VERSION_HEX < 0x03030000
29202  char* defenc_c;
29203  PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
29204  if (!defenc) return NULL;
29205  defenc_c = PyBytes_AS_STRING(defenc);
29206 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
29207  {
29208  char* end = defenc_c + PyBytes_GET_SIZE(defenc);
29209  char* c;
29210  for (c = defenc_c; c < end; c++) {
29211  if ((unsigned char) (*c) >= 128) {
29212  PyUnicode_AsASCIIString(o);
29213  return NULL;
29214  }
29215  }
29216  }
29217 #endif
29218  *length = PyBytes_GET_SIZE(defenc);
29219  return defenc_c;
29220 #else
29221  if (__Pyx_PyUnicode_READY(o) == -1) return NULL;
29222 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
29223  if (PyUnicode_IS_ASCII(o)) {
29224  *length = PyUnicode_GET_LENGTH(o);
29225  return PyUnicode_AsUTF8(o);
29226  } else {
29227  PyUnicode_AsASCIIString(o);
29228  return NULL;
29229  }
29230 #else
29231  return PyUnicode_AsUTF8AndSize(o, length);
29232 #endif
29233 #endif
29234  } else
29235 #endif
29236 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
29237  if (PyByteArray_Check(o)) {
29238  *length = PyByteArray_GET_SIZE(o);
29239  return PyByteArray_AS_STRING(o);
29240  } else
29241 #endif
29242  {
29243  char* result;
29244  int r = PyBytes_AsStringAndSize(o, &result, length);
29245  if (unlikely(r < 0)) {
29246  return NULL;
29247  } else {
29248  return result;
29249  }
29250  }
29251 }
29252 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
29253  int is_true = x == Py_True;
29254  if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
29255  else return PyObject_IsTrue(x);
29256 }
29257 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
29258  PyNumberMethods *m;
29259  const char *name = NULL;
29260  PyObject *res = NULL;
29261 #if PY_MAJOR_VERSION < 3
29262  if (PyInt_Check(x) || PyLong_Check(x))
29263 #else
29264  if (PyLong_Check(x))
29265 #endif
29266  return __Pyx_NewRef(x);
29267  m = Py_TYPE(x)->tp_as_number;
29268 #if PY_MAJOR_VERSION < 3
29269  if (m && m->nb_int) {
29270  name = "int";
29271  res = PyNumber_Int(x);
29272  }
29273  else if (m && m->nb_long) {
29274  name = "long";
29275  res = PyNumber_Long(x);
29276  }
29277 #else
29278  if (m && m->nb_int) {
29279  name = "int";
29280  res = PyNumber_Long(x);
29281  }
29282 #endif
29283  if (res) {
29284 #if PY_MAJOR_VERSION < 3
29285  if (!PyInt_Check(res) && !PyLong_Check(res)) {
29286 #else
29287  if (!PyLong_Check(res)) {
29288 #endif
29289  PyErr_Format(PyExc_TypeError,
29290  "__%.4s__ returned non-%.4s (type %.200s)",
29291  name, name, Py_TYPE(res)->tp_name);
29292  Py_DECREF(res);
29293  return NULL;
29294  }
29295  }
29296  else if (!PyErr_Occurred()) {
29297  PyErr_SetString(PyExc_TypeError,
29298  "an integer is required");
29299  }
29300  return res;
29301 }
29302 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
29303  Py_ssize_t ival;
29304  PyObject *x;
29305 #if PY_MAJOR_VERSION < 3
29306  if (likely(PyInt_CheckExact(b))) {
29307  if (sizeof(Py_ssize_t) >= sizeof(long))
29308  return PyInt_AS_LONG(b);
29309  else
29310  return PyInt_AsSsize_t(x);
29311  }
29312 #endif
29313  if (likely(PyLong_CheckExact(b))) {
29314  #if CYTHON_USE_PYLONG_INTERNALS
29315  const digit* digits = ((PyLongObject*)b)->ob_digit;
29316  const Py_ssize_t size = Py_SIZE(b);
29317  if (likely(__Pyx_sst_abs(size) <= 1)) {
29318  ival = likely(size) ? digits[0] : 0;
29319  if (size == -1) ival = -ival;
29320  return ival;
29321  } else {
29322  switch (size) {
29323  case 2:
29324  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
29325  return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29326  }
29327  break;
29328  case -2:
29329  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
29330  return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29331  }
29332  break;
29333  case 3:
29334  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
29335  return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29336  }
29337  break;
29338  case -3:
29339  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
29340  return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29341  }
29342  break;
29343  case 4:
29344  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
29345  return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29346  }
29347  break;
29348  case -4:
29349  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
29350  return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29351  }
29352  break;
29353  }
29354  }
29355  #endif
29356  return PyLong_AsSsize_t(b);
29357  }
29358  x = PyNumber_Index(b);
29359  if (!x) return -1;
29360  ival = PyInt_AsSsize_t(x);
29361  Py_DECREF(x);
29362  return ival;
29363 }
29364 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
29365  return PyInt_FromSize_t(ival);
29366 }
29367 
29368 
29369 #endif /* Py_PYTHON_H */
double f(double C, double b, double a, int q, int r)
#define PyMODINIT_FUNC